学而时习之,不亦说乎。|

Java:枚举是什么?

Java 枚举是一个特殊的类,一般内容为一组常量,或者是唯一的对象(单例对象)。

常用方法有:

    • values()     获取该枚举类中的所有常量,到一个数组中。
    • ordinal()    获取该常量的索引。
    • valueOf(String name)  通过name获取枚举常量。

 

 


内容为常量

表示一组常量,常量之间用,隔开。它们有默认索引,通过   ordinal()   方法获得。

复制代码
public enum  Antts{
    AAA,BBB,CCC;
}
class Test{
    public static void main(String[] args) {
        System.out.println(Antts.AAA.ordinal());
        System.out.println(Antts.BBB.ordinal());
        System.out.println(Antts.CCC.ordinal());
    }
}
复制代码

运行结果:

 


内容为对象

都是单例对象,对象的属性方法都在枚举类中构造。

复制代码
public enum  Antts{
    AAA,BBB,CCC;//三个对象
int id; String name; public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } } class Test{ public static void main(String[] args) { Antts.AAA.setId(21); System.out.println(Antts.AAA+" id:"+Antts.AAA.id+" name:"+Antts.AAA.name); Antts.BBB.setName("二狗子"); System.out.println(Antts.BBB+" id:"+Antts.BBB.id+" name:"+Antts.BBB.name); } }
复制代码

运行结果:

属性、方法

1、构造器:默认私有,且只能私有。

2、可以有抽象方法,对象必须实现抽象方法。

示例代码:

复制代码
public enum  LeaningEnum {
    //枚举里面的实例就是一个个对象,不过它们的属性都在外面。
    ONE_INSTANCE{
        @Override
        void sayHello() {
            System.out.println("ONE:Hello!");
        }
    },
    TOW_INSTANCE(2,"三蹦子"){
        @Override
        void sayHello() {
            System.out.println("TOW:Hello!");
        }
    };

    int id;
    String name;
    //构造器默认private,也只能是private。
    LeaningEnum(int id, String name) {
        this.id = id;
        this.name = name;
    }
    LeaningEnum() {
    }
    //抽象方法:类的每个实例都必须实现它。
    abstract void sayHello();
    //具体方法
    void sayLove(){
        System.out.println("love love love.");
    }

    public static void main(String[] args) {
        //返回枚举类中所有的常量(单例对象)。
        LeaningEnum[] enums=LeaningEnum.values();
        for(LeaningEnum temp:enums){
            temp.sayHello();
            temp.sayLove();
        }
        //获取指定字符串值的枚举常量。
        LeaningEnum temp = valueOf("TOW_INSTANCE");
        //获取索引。
        System.out.println(temp+"索引为:"+temp.ordinal());
    }
}
复制代码

运行结果:

 

posted @   在博客做笔记的路人甲  阅读(385)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起