public class Player { public final String name; private Team team; .... public boolean friendly(Player other) { return team.has(other); } }
But the obvious thing is, can it be null? Yes it can, in cases where the player does not have a team. So I said 'Let's try Optional, why not`.
private Optional<Team>team;
Then the possibilities for the return statement where limitless from the most straight forward to the most elegant:
return team.isPresent() && team.get().has(other) return team.map(i -> i.has(other)).orElse(false); return team.filter(i -> i.has(other)).isPresent(); return team.orElse(Team.EMPTY).has(other);
Or I could remove the Optional again and have just the old thing:
return team != null && team.has(other);
But 'How will you remember that it can be null in other places?' said the guy. Its a private field, how many places are there really. Also it is logical to null so I would probably check it anyhow.
done_