我会经过这里
http://viralpatel.net/blogs/most-useful-java-best-practice-quotes-java-developers/
2日报价说,提到Java的最佳编码实践,
报价2:决不让一个类公众实例字段
我同意这是绝对正确的,但是我被卡在下面的作者的建议几行下面这个报价。
他说,
private String[] weekdays =
{"Sun", "Mon", "Tue", "Thu", "Fri", "Sat", "Sun"};
public String[] getWeekdays() {
return weekdays;
}
但写getter方法并不完全解决我们的问题。该数组仍然可以访问。使其不可修改的最佳方式是返回数组的克隆而不是数组本身。因此,getter方法将改为
public String[] getWeekdays() {
return weekdays.clone();
}
我从来没有自己使用clone()
Java类的任何getter方法里面。
我想知道(因为它提到是的良好做法之一) - 为什么一个should use
/shouldn't use
clone()
内getter方法?并在哪些场景?
它有资格成为Java的良好编程习惯吗?
感谢
IMO - 对于不可变对象和原始数据类型,不需要clone。对于其他任何事情,如果我们真的希望我们的数据安全,我们必须返回克隆副本而不是原始数据。 –
您可以返回'Arrays.asList(平日)',这将是不可变的。 – Jivings
@馈赠不是真的。该列表不会接受新的元素,但set()方法有效。 –