I realize I’m going to get flamed for not simply writing a test myself… but I’m curious about people’s opinions, not just the functionality, so… here goes…
I have a class that has a private list. I want to add to that private list through the public getMyList() method.
so… will this work?
public class ObA{
private List<String> foo;
public List<String> getFoo(){return foo;}
}
public class ObB{
public void dealWithObAFoo(ObA obA){
obA.getFoo().add("hello");
}
}
Yes, that will absolutely work – which is usually a bad thing. (This is because you’re really returning a reference to the collection object, not a copy of the collection itself.)
Very often you want to provide genuinely read-only access to a collection, which usually means returning a read-only wrapper around the collection. Making the return type a read-only interface implemented by the collection and returning the actual collection reference doesn’t provide much protection: the caller can easily cast to the “real” collection type and then add without any problems.