为什么将 == 与 Enum.toString() 一起使用有效?[复制]

Why does using == with Enum.toString() work? [duplicate]

提问人:Danny Julian 提问时间:9/3/2021 最后编辑:John KugelmanDanny Julian 更新时间:9/3/2021 访问量:66

问:

public enum Style {
    BIG,MEDIUM,SMALL;
    
    public static void main(String[] args) {
        System.out.println(Style.SMALL.toString() == "SMALL");
    }
  
}

为什么这样做?我希望打印是假的,因为比较了对象引用。但是,它打印 .==true

如果有人能解释潜在的行为,我将不胜感激。

Java 枚举 相等

评论

3赞 Sweeper 9/3/2021
我不认为这种行为实际上被指定了。Enum.toString 的文档并没有说返回的字符串将是一个被隔离的字符串,因此根据实现,我认为这可以为您提供.false
0赞 Danny Julian 9/3/2021
有趣的是,在我从事的一个项目中,多年来一直如此,并且它一直运行没有错误。
1赞 Artyer 9/3/2021
相关新闻: stackoverflow.com/q/27908213/5754656 (因为只是打电话Enum#toString()Enum#name())
0赞 Mike 'Pomax' Kamermans 9/3/2021
但请记住,小字符串是堆积的,所以它最终在任何适当的 JVM 上都是真的
4赞 VGR 9/3/2021
真正的答案是:这并不奇怪,但你不能放心地假设它总是有效。

答: 暂无答案