Java学习:枚举类

什么是枚举类:类的对象只有有限个,且是确定的

如何定义枚举类?

方式一:JDK5.0之前,自定义枚举类

步骤:

  1. 私有化类的构造器,保证不能在类的外部创建其对象

  2. 在类的内部创建枚举类的实例。声明为:public static final

  3. 对象如果有实例变量,应该声明为private final,并且在构造器中初始化

示例:

public class SeasonTest {    public static void main(String[] args) {        Season spring = Season.SPRING;        System.out.println(spring);

    }
}
//自定义枚举类class Season {    //1.声明Season对象的属性:private final修饰    private final String seasonName;    private final String seasonDesc;
    //2.私有化类的构造器,并给对象属性赋值    private Season(String seasonName, String seasonDesc) {        this.seasonName = seasonName;        this.seasonDesc = seasonDesc;
    }
    //3.提供当前枚举类的多个对象:public static final的    public static final Season SPRING = new Season("春天", "Spring");    public static final Season SUMMER = new Season("夏天", "Summer");    public static final Season AUTUMN = new Season("秋天", "Autumn");    public static final Season WINTER = new Season("冬天", "Winter");
    //4.其他诉求1:获取枚举类对象的属性
    public String getSeasonName() {        return seasonName;    }
    public String getSeasonDesc() {        return seasonDesc;    }    //4.其他诉求2:提供toString()
    @Override    public String toString() {        return "Season{" +                "seasonName='" + seasonName + '\'' +                ", seasonDesc='" + seasonDesc + '\'' +                '}';    }}

方式二:JDK5.0及其以后,可以使用enum关键字定义枚举类

步骤:

  1. 使用enum关键字定义枚举类

  2. 声明对象属性,使用private final修饰

  3. 私有化类的构造器,并给对象属性赋值

  4. 提供当前枚举类的对象,多个对象之间用","隔开,末尾对象;结束

示例:

public class SeasonTest1 {    public static void main(String[] args) {        Season1 summer = Season1.SUMMER;        System.out.println(summer);        System.out.println("**********************");        Season1[] values = Season1.values();        for (int i = 0; i < values.length; i++) {            System.out.println(values[i]);            values[i].show();        }        Season1 winter = Season1.valueOf("WINTER");        System.out.println(winter);        winter.show();    }}

interface Info {    void show();}

//使用enum关键字enum Season1 implements Info {    //3.提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象;结束    SPRING("春天", "Spring") {        @Override        public void show() {            System.out.println("where arr you");        }    },    SUMMER("夏天", "Summer") {        @Override        public void show() {            System.out.println("i miss you");        }    },    AUTUMN("秋天", "Autumn") {        @Override        public void show() {            System.out.println("i want to be with you");        }    },    WINTER("冬天", "Winter") {        @Override        public void show() {            System.out.println("i want you");        }    };    //1.声明Season对象的属性:private final修饰    private final String seasonName;    private final String seasonDesc;
    //2.私有化类的构造器,并给对象属性赋值    private Season1(String seasonName, String seasonDesc) {        this.seasonName = seasonName;        this.seasonDesc = seasonDesc;
    }

    //4.其他诉求1:获取枚举类对象的属性
    public String getSeasonName() {        return seasonName;    }
    public String getSeasonDesc() {        return seasonDesc;    }    //4.其他诉求2:提供toString()
    @Override    public String toString() {        return "Season1{" +                "seasonName='" + seasonName + '\'' +                ", seasonDesc='" + seasonDesc + '\'' +                '}';    }
  /*  @Override    public void show() {        System.out.println("this is a season");    }*/}

enum类中的常用方法:

  • values():返回枚举类型的对象数组。该方法可以方便地遍历所有的枚举值

  • valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。

  • toString():返回当前枚举类对象常量的名称

enum使用说明:

  • 使用enum定义的枚举类默认继承了java.lang.Enum类,因此不能再继承其他类

  • 枚举类的构造器只能使用private权限修饰符

  • 必须在枚举类的第一行声明枚举类对象

​​​​​​​ 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值