我意识到我会因为自己不简单地编写测试而受到批评...但我很好奇人们的意见,而不仅仅是功能,所以...这里...
我的类(class)有一个私有(private)列表。我想通过公共(public) getMyList() 方法添加到该私有(private)列表。
那么...这会起作用吗?
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");
}
}
最佳答案
是的,这绝对有效 - 这通常是一件坏事。 (这是因为您实际上返回的是集合对象的引用,而不是集合本身的副本。)
很多时候,您希望提供对集合的真正只读访问,这通常意味着返回集合的只读包装器。将返回类型设置为集合实现的只读接口(interface)并返回实际的集合引用并不能提供太多保护:调用者可以轻松地转换为“真实”集合类型,然后添加而不会出现任何问题。
关于java - 我可以直接通过 getter 添加到私有(private)列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895257/