我會經過這裏
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()方法有效。 –