java - 我可以直接通过 getter 添加到私有(private)列表吗?

标签 java

我意识到我会因为自己不简单地编写测试而受到批评...但我很好奇人们的意见,而不仅仅是功能,所以...这里...

我的类(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/

相关文章:

java - 自下而上填充一棵树

java - Android TTS如何在textview中显示说话的单词

java - jsp如何根据jsp页面调用的servlet完成的处理显示附加数据

java - Jprofiler - 如何使用 Java api 收集默认探针数据?

java - 基于 JDBC 的 HSQLDB : execute SQL statements in batch

java - 将当前日期与属性文件中的日期进行比较

Java - 如何简化我的 Java

java - 我的所有 JUnit 都出现空指针异常。调试中 - 未找到源

java - 让 spring 上下文变量指向 webapp 中的实际外部上下文

java - AndEngine - 检查与 Sprite 或 Physics Body 的重叠?