java - Java 中的 setter/getter ——我正在做的事情安全吗?

标签 java

我有一个封装了一些功能的私有(private)内部类。它填充两个 ArrayList。我有只返回私有(private)变量的 ArrayLists 的 setter/getter 。需要 setter/getter 吗?我可以只使 ArrayLists 成为公共(public)实例变量吗?最佳做法是什么?

public class OuterClass {
    //Stuff the OuterClass does

    private class InnerClass {
        private ArrayList<String> array1;
        private ArrayList<String> array2;

        public InnerClass() {
            //Init and do stuff w/ arrays
        }

        public ArrayList<String> getArray1() {
            return array1;
        }

        public ArrayList<String> getArray2() {
            return array2;
        }
    }
}

最佳答案

Yes 可以使 Arraylist public,尽管最佳实践是使用 getter。这允许您构建副作用,例如

  • 执行计算
  • 检查约束
  • 延迟初始化
  • 提供可能继承的方法

它还允许您在将来修改类的内部结构而不会违反契约(Contract)。

关于java - Java 中的 setter/getter ——我正在做的事情安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7826161/

相关文章:

java - addAll(Collection).. 不适用于参数(Iterable)

java - For 循环仅运行一次

java - 无法通过 QAndroidJniObject 创建 java 类

java - 使用各种字段递归解析字符串的最佳方法

java - Eclipse 团队同步 - Workspace 和 Java Workspace (SVN) 之间的区别

java - Eclipse 调试器中变量条目旁边的 id=xxx 是什么

javascript - JSP 文件中的 jQuery 变量

java - 就内存和性能而言,在 Java 中每秒打印格式化日期+时间的最有效方法是什么?

java - 如何在从 swagger 生成 java 代码时将 "double"字段视为 "BigDecimal"?

java - 绑定(bind)服务和前台服务有什么区别?