【发布时间】:2013-11-02 14:35:25
【问题描述】:
由于我经常在两个地方处理类的结构变化很痛苦:
class A {
class C{}
class B{}
private B bChild;
private C cChild;
private Object[] structure() {
return new Object[]{bChild, cChild};
}
public int hashCode() {
Arrays.hashCode(structure());
}
public boolean equals(Object that) {
//type check here
return Arrays.equals(this.structure(), ((A)that).structure());
}
}
除了对原语进行装箱外,这种方法还有什么不好的? 可以改进吗?
【问题讨论】:
-
除了它不能编译之外,你的意思是?到目前为止,它没有什么可推荐的。
-
这种方法试图解决什么问题?
-
@Vitaliy,将对象结构封装在两个地方而不是三个地方(字段、等于、hashCode)。
-
你使用的是什么 JDK? (是 1.7 吗?)
-
我使用的是 1.6 和 1.7。考虑迁移到 1.7。