枚举<-> JAVA中的字符串比较

亚历克斯

我想将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(),但Enumequals()第二行中的值相比,我不明白其用作值的含义Foo.TEST1用作Integer或其他任何东西,有什么JAVA内部呢?

罗希特·贾恩(Rohit Jain)

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章