我想将AString
与A进行比较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枚举
是否等于字符串?:true
枚举“ TEST1”的值和字符串“ 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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句