为了账号安全,请及时绑定邮箱和手机立即绑定

枚举值,color.red与color.red.name()的区别

枚举值,color.red与color.red.name()的区别

Catherine3479953 2017-06-19 14:23:29
class test  {    public enum color{        red, yellow, green    }; public static void main (String[] args) throws java.lang.Exception { System.out.println(color.red); System.out.println(color.red.name()); System.out.println((color.red).equals(color.red.name())); }}这里的color.red和color.red.name()有什么区别啊?输出的值都为red,但判断关系是不相等,是他们的类不相等吗?
查看完整描述

2 回答

已采纳
?
Albatron_

TA贡献10条经验 获得超2个赞

这个因为枚举类型也是类,对应的red,green等都是color产生的对象,所以对象和对象比较(在没有重写equals方法的情况下)即使对应值相同,但因为对象不同所以判断还是不相等的

查看完整回答
1 反对 回复 2017-06-19
  • Catherine3479953
    Catherine3479953
    所以如果重写equals的话, color.red和color.red.name()两者是相同吗?
  • Catherine3479953
    Catherine3479953
    回复 Albatron_: 下面是枚举类的源码,所以设计者不想让子类去重写这个方法 public final boolean equals(Object other) { return this==other; } 所以color.red和color.red.name()两者的区别是?
  • 2 回答
  • 0 关注
  • 1500 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信