sgo*_*les 7 java clone coding-style getter-setter
伙计们,
我正在阅读这里提到的Java最佳编码实践
http://viralpatel.net/blogs/most-useful-java-best-practice-quotes-java-developers/
第二句话说,
引用2:永远不要将类的实例字段设为public
我同意这是绝对正确的,但是因为跟着作家的推荐,我在这个引言下面几行.
他说,
private String[] weekdays =
{"Sun", "Mon", "Tue", "Thu", "Fri", "Sat", "Sun"};
public String[] getWeekdays() {
return weekdays;
}
Run Code Online (Sandbox Code Playgroud)
但是编写getter方法并不能完全解决我们的问题.该阵列仍然可以访问.使其不可修改的最佳方法是返回数组的克隆而不是数组本身.因此,getter方法将更改为
public String[] getWeekdays() {
return weekdays.clone();
}
Run Code Online (Sandbox Code Playgroud)
我从未clone()
在Java类的任何getter方法中使用过.
我想知道(因为它被提到是一个良好的做法) - 为什么一个should use
/ shouldn't use
clone()
内部getter方法?在哪些情况下?
是否有资格成为Java的良好编码实践?
谢谢
这在本书中讨论的"有效的Java"由约书亚·布洛克.有一节名为"在需要时制作防御性副本"(第2版第39节).
我认为Google图书可能会让您看到该部分的预览.
一本关于这样的话题的好书.