enum Mate {
XH,
XQ("小强");
private String name = "小红";
Mate(){};
Mate(String name){
this.name = name;
}
}
System.out.println(Mate.XH); //为什么返回的是XH?
System.out.println(Mate.XQ); //为什么返回的是XQ?
enum Mate {
XH,
XQ("小强");
private String name = "小红";
Mate(){};
Mate(String name){
this.name = name;
}
}
System.out.println(Mate.XH); //为什么返回的是XH?
System.out.println(Mate.XQ); //为什么返回的是XQ?
15 回答8.1k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
不是很理解你要问的点。我简单说一下我的看法吧:
1.首先是
toString()
方法,返回的是抽象类Enum的name属性2.其次再看name属性的含义是什么,大致意思就是name属性是enum常量的名字,如
Color.RED
是RED
.同时该字段为final字段,意思就是赋值后无法在改变其值。而赋值则在构造方法中进行的。
3.构造方法:可以看到构造方法是
protected
的,也就是我们无法通过new关键字创建Enum
对象。注释里面也说了,该构造方法是编译器去处理执行的。实际执行过程就是讲枚举常量的常量名复制给了属性name。4.最后再说我们自己创建枚举类的时候,我们是可以覆盖
toString()
方法的,这样就可以在输出的时候返回我们想看到的信息