黑马程序员--java枚举类型

---------- android培训 java培训 、java学习型技术博客、期待与您交流! ----------

通过使用新的enum关键字创建指定的对象集合,您可以创建一个枚举类型。然后,可以将每个指定的值看作是那个类的一个实例。

枚举(Enum):我们所定义的每个枚举类型都继承自java.lang.Enum 类,枚举中的每个成员默认都是public static final的。
而每个枚举的成员其实就是您定义的枚举类型的一個实例(Instance)。换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什
么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。

1 enum Operation
2 {
3     ADD, SUB, MUL, DIV
4 }


以上有四个实例,借用张孝祥老师上课可讲的方法,写一个与上面等价的类实现:

 1 public class Operation
 2 {
 3     private Operation()
 4     {    
 5     }
 6     public static final Operation ADD = new Operation();
 7     public static final Operation DIV = new Operation();
 8     public static final Operation SUB = new Operation();
 9     public static final Operation MUL = new Operation();
10 }


带有构造方法的enum,注意实例必须写在构造方法前面,构造方法必须是私有的private,并且最后一个实例和构造方法用分号隔开;枚举加载是会初始化枚举对象(对象都是public static final的)和调用静态方法,举个例子:

 1 enum Operation
 2 {
 3     ADD, SUB(3), MUL, DIV(5);
 4     private Operation()
 5     {
 6         System.out.println("不带参说的");
 7     }
 8     private Operation(int a)
 9     {
10         System.out.println("带参数的");
11     }
12 }


 

说说调用过程吧,当Operation.ADD调用的是不带参说的构造方法,Operation.SUB调用的是带参数的构造方法;

带有抽象方法的枚举:

 1 enum TrafficLamp
 2 {
 3     RED
 4     {
 5         @Override
 6         public TrafficLamp nextLamp()
 7         {
 8             return GREEN;
 9         }
10     },
11     GREEN
12     {
13         @Override
14         public TrafficLamp nextLamp()
15         {
16             return YELLOW;
17         }
18     },
19     YELLOW
20     {
21         @Override
22         public TrafficLamp nextLamp()
23         {
24             return RED;
25         }
26     };
27     public abstract TrafficLamp nextLamp();
28 }


当枚举只有一个 成员时可以当作单例的实现方式。

1 enum Operation
2 {
3     ADD(3);
4     private Operation(int a)
5     {
6         System.out.println("单例:枚举实现");
7     }
8 }

 

枚举可以遍历,枚举类.values()方法(这是枚举类型的方法)返回了一个由独立的枚举类实例构成的数组。

总结:

使用枚举类型的基本概念很简单。您可以先定义一个指定的、封闭的值集合。然后,在需要这些值中的某一个值时,可以通过它的名称来指定它。深入理解枚举,枚举用到了很多的知识点,有内部类,以及static,final的用法。

 

---------- android培训 java培训 、java学习型技术博客、期待与您交流! ----------

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值