【发布时间】:2014-04-09 11:30:53
【问题描述】:
我收到 Sonar 报告的以下违规行为:可能通过返回对可变对象的引用来暴露内部表示。
这是因为我从 getter 返回一个 String[]。
我知道问题是什么以及如何解决它,但是通过 stackoverflow 上的几个线程我注意到 String[] 和 Dates 似乎发生了这种情况:
但是考虑到发生这种情况的原因,它返回了对一个对象的引用,该对象的内部状态可以被调用者更改。不应该为每个返回可变对象的 getter 引发这种违规行为吗?
例如:
public List<String> getList() { return list; }
public Foo getFoo() { return foo; } //where foo is just a random object with getters and setters...
调用者可以改变返回对象的状态。声纳不应该为那些报告同样的吗?
非常感谢, 弗朗西斯科。
【问题讨论】: