我想将String
与Enum
进行比较。我知道如何正确进行比较,但我不明白为什么。我的以下示例显示了我的问题:
enum Foo{
TEST1
}
String likeEnumTest1 = "TEST1";
System.out.println("Is enum equal string?: " + likeEnumTest1.equals(Foo.TEST1));
System.out.println("Is enum.toString() equal string?: " + likeEnumTest1.equals(Foo.TEST1.toString()));
System.out.println("Value of enum '" + Foo.TEST1 + "' and value of string '" + likeEnumTest1+"'");
输出为:
Is enum equal string?: false
Is enum.toString() equal string?: true
Value of enum 'TEST1' and value of string 'TEST1'
我知道 Enum.toString()
在 System.println()
中使用时被隐式调用,但我不明白 Enum 是什么
与第二行中的 equals()
进行比较时用作值。 Foo.TEST1
是用作 Integer
还是其他什么,JAVA
内部做了什么?
最佳答案
String#equals(Object)
方法首先检查传递的参数是否是 String 的实例。这是源代码片段:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
// Code [...]
}
return false;
}
由于 Foo.TEST1
不是 String
的实例,因此它返回 false
。
关于java - JAVA中的枚举<->字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322089/