gpt4 book ai didi

java - 为什么 myEnum.ONE 不等于 myEnum.ONE.toString()?

转载 作者:行者123 更新时间:2023-11-29 10:07:37 25 4
gpt4 key购买 nike

我有以下枚举:

public enum myEnum {
ONE("ONE"), TWO("TWO");

private String name;

private myEnum(String name) {
this.name = name;
}

@Override
public String toString() {
return name;
}
};

我的问题是为什么下面的计算结果为假?我怀疑它与 equals() 方法的实现有关。

(myEnum.ONE).equals(myEnum.ONE.toString())

最佳答案

一般来说,不同类型的对象并不是定义为相等的,因为为了满足平等契约要求的对称性,两个类都必须相互了解。

此外,因为 equals 必须是可传递的(这也是由 equals contract of equals 规定的),引入你的规则会产生奇怪的后果。考虑:

enum Color {
green, red, blue;
}

enum Experience {
green, novice, veteran;
}

Color.green 应该等于 Experience.green 吗?可能不是,因为经验和颜色是完全不同的东西。但是如果 "green".equals(Color.green)"green".equals(Experience.green)Color.green 必须是等于 Experience.green

所以一般规则是:不相关类型的对象不相等。

关于java - 为什么 myEnum.ONE 不等于 myEnum.ONE.toString()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612719/

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