您的位置:首页 > 编程语言 > Java开发

java枚举类型的基本用法

2014-10-16 10:48 295 查看


java枚举类型的基本用法

1 枚举类型等效于定义static finally 常量

2. 枚举类型可以有自己的属性(参数)和方法

3. 枚举类型可以以独立的文件存在

 

最简单的枚举类型:

public enum Belle {

    para1,  para2,  para3,  para4;

}

 

调用:

        for (Belle belle : Belle.values()) {   // 遍历枚举中所有的对象

            System.out.println(belle.name());   // 输出每一个枚举的名称

        }

       要取出某个指定名称的枚举成员 可用 Belle.para1(注意:因为枚举对象默认是 final 其成员属性都是stastic,final, 直接调用),也可以用 Belle.valueOf("para1")

 

稍复杂的枚举类型:

public enum Belle {

       para1("this is para1"),

       para2("this is para3"),

       para3("this is para3"),

       para4("this is para4");

       public final String str; //定义枚举成员属性

       private Belle(String str) { //内部方法设定枚举成员属性

            this.str = str;

       }

}

我们看看编译后,用javap命令查看编译后的内容:

C:\>javap
Belle 

public final class Belle extends java.lang.Enum{

    public static final Belle para1;

    public static final Belle para2;

    public static final Belle para3;

    public static final Belle para4;

    public final java.lang.String str;

    public static Belle[] values();

    public static Belle valueOf(java.lang.String);

    static {};

}

这样就每一个枚举成员就有了属性,可以定义多个属性,每个属性必须在内部方法中set(例如this.str = str;)

调用时用这样的格式取值 belle.str

枚举成员就的属性可以不光是字符串,可以是任意对象

 

更复杂的枚举类型:

public enum Belle {

    para1("this is para1") {

       public String event() { //实现枚举成员的方法

           return "i am  a mtthod of para1";

       }

    },

 

    para2("this is para3") {

       public String event() { //实现枚举成员的方法

           return "i am  a mtthod of para2";

       }

    },

 

    para3("this is para3") {

       public String event() { //实现枚举成员的方法

           return "i am  a mtthod of para3";

       }

    };

 

    public final String str; //定义枚举成员属性

 

    Belle(String str) { //内部方法设定枚举成员属性

       this.str = str;

    }

 

    public abstract String event();//定义枚举成员的方法

 

}

 

这样就每一个枚举成员就有了自己的方法,可以定义多个方法,方法必须以抽象方法的形式作声明(例如abstract String event();) 一个方法一旦定义了就必须在每一个枚举成员中得到实现。

调用方法时用这样的格式 belle1.event();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: