This is not hard/advanced technically, but its not obvious what the answer is.
q: is it better design to return a high level Collection, or the best match?
Assume you have a Person object, with a Collection of email addresses (since every geek has two or more).
When you define the getEmailAddresses(), should the prototype be
or
public ArrayList<EmailAddress> getEmailAddresses();
or perhaps even
What is the "best" approach, and what is the
philosophy behind the choice?