Dan*_*ski 13 java encapsulation
在我的Java应用程序中,我有一些这样的复制构造函数
public MyClass(MyClass src) {
this.field1 = src.field1;
this.field2 = src.field2;
this.field3 = src.field3;
...
}
Run Code Online (Sandbox Code Playgroud)
现在Netbeans 6.9警告这个,我想知道这个代码有什么问题?
我的担忧:
编辑:实际警告是"访问另一个对象的私有字段",Netbeans提供的唯一可用操作是添加一个@SuppressWarnings("AccessingNonPublicFieldOfAnotherObject")
我的代码实际上和给定的例子一样简单.
我发现代码没有问题.事实上,我与您分享您的担忧,并且宁愿不使用getter.
你得到的警告究竟是什么?也许这与你没有向我们展示的东西有关?
更新:似乎Netbeans真的在抱怨这一点.我想,对于配备IDE,这是一个颇具争议的警告.
它让我想起ADT与Object的讨论.
ADT可以访问ADT的其他实例的内部状态.对象哲学将阻止这种情况并通过getter/setter强制执行访问以确保表示独立性.
这是一个经过深思熟虑的选择,Java中的实例变量是类私有的,而不是对象私有的(在后一种情况下只this.privateInstVar允许,不是obj.privateInstVar).
这既有优点也有缺点.在克隆和平等方面,它特别方便.另一方面,它可能被滥用并打破封装.
这几乎是一场哲学辩论.但恕我直言,你在做什么都没关系.
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |