java - 在复制构造函数中访问另一个对象的私有(private)字段——真的有问题吗?

标签 java encapsulation

在我的 Java 应用程序中,我有一些像这样的复制构造函数

public MyClass(MyClass src) {
    this.field1 = src.field1;
    this.field2 = src.field2;
    this.field3 = src.field3;
...
}

现在 Netbeans 6.9 对此发出警告,我想知道这段代码有什么问题吗?

我的担忧:

  • 使用 getter 可能会引入不需要的副作用。新对象可能不再被视为原始对象的副本。
  • 如果建议使用 getter,那么如果对新实例也使用 setter 不是更一致吗?

编辑:实际警告是“访问另一个对象的私有(private)字段”,Netbeans 提供的唯一可用操作是添加一个@SuppressWarnings("AccessingNonPublicFieldOfAnotherObject")

我的代码实际上和给定的例子一样简单。

最佳答案

我看代码没有问题。事实上,我和你一样担心,并且宁愿不使用 setter/getter 。

您收到的警告到底是什么?也许这与您没有向我们展示的内容有关?

更新:似乎 Netbeans 确实在提示这一点。我认为,这是一个与 IDE 一起发布的相当有争议的警告。

关于java - 在复制构造函数中访问另一个对象的私有(private)字段——真的有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2431587/

相关文章:

java - 需要开发基于图形的模拟引擎的建议

java - Callable<T> call() + 输入参数 + Spring

java - 如何从一个jsp页面获取输入值到另一个jsp页面?

java - 高效地从 Google Cloud Storage 中删除多个 blob

javascript - 如何引用 JavaScript 函数内的不同位置

java - 在 Java 中使用图论算法的面向对象方法是否比基于一般数组的操作更快?

c# - 您应该使用属性来初始化构造函数中的字段吗?

oop - 理解封装和抽象的简单方法

javascript - 如何在javascript中使用同一对象中的公共(public)方法访问私有(private)变量?

c++ - 如何创建一个空的全局类并在启动时实例化它?