ale*_*lex 0 java string enums compare
我想比较一个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+"'");
Run Code Online (Sandbox Code Playgroud)
输出是:
枚举是否等于字符串?:false
是enum.toString()等于字符串?: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;
}
Run Code Online (Sandbox Code Playgroud)
由于Foo.TEST1它不是实例String,因此返回false.
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |