zoukankan      html  css  js  c++  java
  • java 枚举类小结 Enum

    好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧。说实话,枚举类确实能够给我们带来很大的方便。

    说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的。进而求其次,究竟枚举类到底有何特殊之处呢?

    呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点)

     1 /**
     2  * 测试枚举类
     3  * @author Administrator
     4  * @Date   2015-8-3
     5  */
     6 public class EnumTest {
     7     public static void main(String[] args) {
     8         Person person1 = Person.MAN;
     9         System.out.println(person1);
    10         Person.MAN.work();
    11         Person.WOMEN.work();
    12         
    13     }
    14     //测试Person的values()方法
    15     public static void testValues(){
    16         Person []persons = Person.values();
    17         for(Person p:persons){
    18             
    19             System.out.println(p);
    20             
    21         }
    22             
    23     }
    24     //测试Person的valuesof()方法
    25     public static void testValuesOf(){
    26         Person person2 = Person.valueOf("MAN");
    27         System.out.println(person2);
    28     }
    29 }
    30 /**
    31  * 测试接口
    32  * @author Administrator
    33  * @Date   2015-8-3
    34  */
    35 interface PersonExtends{
    36     void work();
    37 }
    38 /**
    39  * 枚举类
    40  * @author Administrator
    41  * @Date   2015-8-3
    42  */
    43 enum Person implements PersonExtends{
    44     MAN("zhangsan","12"){
    45         public void work(){
    46             System.out.println("能干体力活,承受得住重量");
    47         }
    48         
    49     },WOMEN("lisi","13"){
    50         public void work(){
    51             
    52             System.out.println("职场白领居多,能者居之");
    53         }
    54     };
    55     private String name;
    56     private String age;
    57     private Person(String name,String age){
    58         this.name = name;
    59         this.age = age;
    60     }
    61     public String getName() {
    62         return name;
    63     }
    64     public void setName(String name) {
    65         this.name = name;
    66     }
    67     public String getAge() {
    68         return age;
    69     }
    70     public void setAge(String age) {
    71         this.age = age;
    72     }
    73     public void method(){
    74         System.out.println("The person is liming");
    75     }
    76     @Override
    77     public String toString() {
    78         // TODO Auto-generated method stub
    79         return super.toString();
    80     }
    81     @Override
    82     public void work() {
    83         // TODO Auto-generated method stub
    84         System.out.println("男人和女人工作的强度不同");
    85     }
    86     
    87 }

    说明一下我以上代码的几个关键的因素:

    1.以前不太明白枚举类中一开始的对象如何去写,其实很简单,只是原始类的缩写而已,注意枚举类默认继承了Enum类,所以不能再继承。看如下代码:

    private final Person2 MAN = new Person2("zhangsan","12");

    其实枚举类中的对象和这个写法是一样的,只不过在enum声明的类中不能够这么写。可以这样理解,既然枚举类已经限定了范围,只能在枚举类中new对象,故构造方法是private类型,外界也不允许修改,故它就是不变的,所以声明成为final类型,对象初始化,这点相信大家都知道的。然而在enum中,已经知道这种约定,所以enum类中不允许这样写,把默认的都删掉,有点类似接口中的final static 。所以就剩下MAN("zhangsan","12")。强调一点,枚举对象必须写在类的开头。

    2.在测试枚举类中,引用枚举类的对象相信大家一看就能明白。还有两个方法说明一下,一是values方法,取得枚举类中定义的枚举类的对象,返回的是一个枚举类的集合。如上依次遍历。。。其次是valuesof方法,根据名字获取枚举类型的对象,强调一下,valuesof(String str)中的参数必须是枚举类中对象的名字,否则将会报异常。

    今天有点晚了。。明天再做更新啦。。

    吾宁做一叶扁舟,始航于湖边,遨游于海上,浪迹于江中。
  • 相关阅读:
    学习笔记
    博客园css
    linux命令随时添加
    spring注解
    springboot常用注解
    Ubuntu(16.04)安装Redis
    Mac OS 10.15 虚拟机安装(提供镜像,安装VMware tools,更改分辨率)
    SSM-员工管理项目实战-CRUD-增删改查
    蓝桥杯 2014届真题 地宫取宝 动态规划解法
    设计模式-工厂方法模式 实战演习 代码实现
  • 原文地址:https://www.cnblogs.com/assassin666/p/4700773.html
Copyright © 2011-2022 走看看