【发布时间】:2012-02-11 20:46:27
【问题描述】:
我有一个简单的类,它包含一个更大、更笨重的类的骨架。这个骨架就是一个字符串 id、一个类型枚举和一些选项标志。
我希望能够克隆这个骨架,但我不知道枚举是否是克隆安全的(按值传递)。我认为它们不是,因为它们被视为类(通过引用传递)。将枚举传递给克隆是否安全?
为清楚起见的示例:
class A {
String id;
Enum state;
int flags;
A clone() {
A ret = new A();
ret.id = id;
ret.state = state; // Am I safe here?
ret.flags = flags;
return ret;
}
}
【问题讨论】:
-
如果您的 Java 伪代码试图覆盖
Object.clone(),请小心:如果是这种情况,它就没有正确实现!你不能在不违反clone()的情况下做new A()。如果您的方法与Object.clone()无关,那么您最好将其重命名以避免混淆。
标签: java enums clone pass-by-reference pass-by-value