枚举类型

1   java enum(枚举)使用详解 + 总结  主要是跟API相关的介绍

2   java枚举7种常见用法                      主要是enum的用法介绍。


我的理解

public  enum  EnumTest {
     MON, TUE, WED, THU, FRI, SAT, SUN;
}

这段代码实际上调用了7次 Enum(String name, int ordinal):

new  Enum<EnumTest>( "MON" , 0 );
new  Enum<EnumTest>( "TUE" , 1 );
new  Enum<EnumTest>( "WED" , 2 );

因为子类没有提供构造函数,子类直接调用继承于父类的构造函数。

那么,

  1. public enum Color {  
  2.     RED("红色"1), GREEN("绿色"2), BLANK("白色"3), YELLO("黄色"4);  
  3.     // 成员变量  
  4.     private String name;  
  5.     private int index;  
  6.     // 构造方法  
  7.     private Color(String name, int index) {  
  8.         this.name = name;  
  9.         this.index = index;  
  10.     }  

此时该作何解释呢?它是怎么具体调用的呢?(后面系原创思考)

读过两篇很好的博文后,你就知道了,声明为enum的类实际上与普通的类没什么区别(可由反编译后的程序看出来),它隐式地继承了java.lang.Enum,故不允许使用extends继承其他类。

此时,你应当注意到 Color类的构造方法是用private修饰的,即使是default也默认为private。

From: http://download.oracle.com/javase/tutorial/java/javaOO/enum.html

Note: The constructor for an enum type must be package-private or private access. It automatically creates the constants that are defined at the beginning of the enum body. You cannot invoke an enum constructor yourself.

显然,这是规定,当然,private 的构造函数只允许你在当前类内实例化对象,即第一行的

  1.     RED("红色"1), GREEN("绿色"2), BLANK("白色"3), YELLO("黄色"4);  

JAVA规定enum类所声明的常量必须在第一行声明,即比其他代码块都要靠前。

此时,子类提供了自己的构造函数,子类对象调用子类的构造函数。

  1.     RED("红色"1) 相当于 Color RED = new Color("红色", 1); 其他同理。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值