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)中的参数必须是枚举类中对象的名字,否则将会报异常。

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

    吾宁做一叶扁舟,始航于湖边,遨游于海上,浪迹于江中。
  • 相关阅读:
    Win10 UWP Tile Generator
    Win10 BackgroundTask
    UWP Tiles
    UWP Ad
    Win10 build package error collections
    Win10 八步打通 Nuget 发布打包
    Win10 UI入门 pivot multiable DataTemplate
    Win10 UI入门 导航滑动条 求UWP工作
    UWP Control Toolkit Collections 求UWP工作
    Win10 UI入门 SliderRectangle
  • 原文地址:https://www.cnblogs.com/assassin666/p/4700773.html
Copyright © 2011-2022 走看看