我有以下枚举:
public enum myEnum {
ONE("ONE"), TWO("TWO");
private String name;
private myEnum(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么以下评估为假?我怀疑它与equals()方法的实现有关.
(myEnum.ONE).equals(myEnum.ONE.toString())
Run Code Online (Sandbox Code Playgroud)
通常,不同类型的对象没有被定义为相等,因为为了满足等于契约所规定的对称性,两个类必须彼此了解.
此外,因为平等必须是可传递的(这也是平等契约所规定的),引入你的规则会产生奇怪的后果.考虑:
enum Color {
green, red, blue;
}
enum Experience {
green, novice, veteran;
}
Run Code Online (Sandbox Code Playgroud)
应该Color.green相等Experience.green吗?可能不是,因为经验和颜色是真正不同的东西.但如果"green".equals(Color.green)和"green".equals(Experience.green),Color.green必须等于Experience.green.
所以一般规则是:不相关类型的对象不相等.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |