gpt4 book ai didi

Java - 在 getter 方法中克隆属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:03 24 4
gpt4 key购买 nike

各位,

我正在阅读此处提到的 Java 最佳编码实践
http://viralpatel.net/blogs/most-useful-java-best-practice-quotes-java-developers/

第二个引用说,

Quote 2: Never make an instance fields of class public

我同意这是绝对正确的,但我因为遵循作者在这句话下面几行的建议而陷入困境。

他说,


private String[] weekdays = 
{"Sun", "Mon", "Tue", "Thu", "Fri", "Sat", "Sun"};

public String[] getWeekdays() {
return weekdays;
}

但是写getter方法并不能完全解决我们的问题。该数组仍然可以访问。使其不可修改的最佳方法是返回数组的克隆而不是数组本身。因此 getter 方法将更改为

public String[] getWeekdays() {
return weekdays.clone();
}

我自己从未在 Java 类的任何 getter 方法中使用过 clone()

我想知道(因为它被提到是一种好的做法)- 为什么一个人应该使用/应该不在 getter 方法中使用 clone() 吗?在哪些情况下?

它有资格成为 Java 的良好编码习惯吗?

谢谢

最佳答案

这在 Joshua Bloch“Effective Java” 一书中进行了讨论。有一节叫做“在需要时制作防御副本”(第 2 版第 39 节)。

https://www.informit.com/articles/article.aspx?p=31551&seqNum=2

一本关于此类主题的好书。

关于Java - 在 getter 方法中克隆属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12559614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com