我想比较一下 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+"'");
输出为:
枚举是否等于字符串?:false
enum.tostring()是否等于字符串?:true
枚举“test1”的值和字符串“test1”的值
我明白 Enum.toString()
在中使用时称为隐式 System.println()
但我不明白 Enum
与比较时用作值 equals()
在第二行。是 Foo.TEST1
用作 Integer
或者别的什么,有什么用 JAVA
你在内部做什么?
2条答案
按热度按时间nukf8bse1#
问。我想比较一个字符串和一个枚举
枚举提供
name()
方法。你需要用它来比较enum
带有String
因为equals()
方法检查参数是否为String
示例与否。既然不是,它就会回来false
.这可以从string类的equals()的源代码中看出
0tdrvxhp2#
这个
String#equals(Object)
方法首先检查传递的参数是否是的示例String
不管怎样。以下是源代码片段:自
Foo.TEST1
不是的示例String
,它返回false
.