JAVA--枚举类

一、定义:

 类的对象是有限个、确定的。如:

性别:男、女;

线程状态:创建、就绪、运行、堵塞、死亡;

当需要定义一组常量时,强烈建议使用枚举类。

二、属性:

1、枚举类对象的属性不应允许被改动,所以使用private final修饰;

2、枚举类的属性应该在构造器中赋值;

3、若枚举类使用了含参构造器,列出枚举值时也必须传相应的参数;

三、自定义枚举类:

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

2、在类的内部创建枚举类的实例,其实例声明为:public static final;

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

实例:

class Enumer1{
    private final String SeasonName;
    private final String SeasonDesc;

    private Enumer1(String name,String desc){
        this.SeasonName=name;
        this.SeasonDesc=desc;
    }

   public static final Enumer1 SPRING=new Enumer1("春天","春暖花开");
    public static final Enumer1 SUMMER=new Enumer1("夏天","夏日炎炎");
    public static final Enumer1 AUTUMN=new Enumer1("秋天","秋高气爽");
    public static final Enumer1 WINTER=new Enumer1("冬天","冰天雪地");

    public String getSeasonName() {
        return SeasonName;
    }

    public String getSeasonDesc() {
        return SeasonDesc;
    }

    @Override
    public String toString() {
        return "Enumer1{" +
                "SeasonName='" + SeasonName + '\'' +
                ", SeasonDesc='" + SeasonDesc + '\'' +
                '}';
    }
}
public class EnumerTest1 {
    public static void main(String[] args) {
        Enumer1 spring=Enumer1.SPRING;
        System.out.println(spring);

    }
}

四、使用enum定义枚举类

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

2、枚举类的构造器只能使用private访问修饰符;

3、枚举类第一行必须声明枚举类对象,并且实例之间用“,”隔开“;”结尾,其中public static final修饰由系统自动添加;

4、常用方法:

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

valueOf(String str)方法:可以把一个字符串转化为对应的枚举类对象,要求字符串和枚举类对象一致,否则运行是异常;

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

5、实现接口:

a、和普通java类一样可以实现一个或多个接口;

b、根据每个枚举值是否需要实现接口中方法的同一行为方式,可选择统一实现该方法或枚举值分别实现;

实例:

interface Inte{
    public void show();
}
enum Enumer2 implements Inte{
    SPRING("春天","春暖花开"){
        @Override
        public void show() {
            System.out.println("春天很好");
        }
    },
    SUMMER("夏天","夏日炎炎"){
        @Override
        public void show() {
            System.out.println("没人会喜欢这个夏天");
        }
    },
    AUTUMN("秋天","秋高气爽"){
        @Override
        public void show() {
            System.out.println("没有秋天");
        }
    },
    WINTER("冬天","冰天雪地"){
        @Override
        public void show() {
            System.out.println("今年没有冬天");
        }
    };

    private final String SeasonName;
    private final String SeasonDesc;

    Enumer2(String seasonName, String seasonDesc) {
        SeasonName = seasonName;
        SeasonDesc = seasonDesc;
    }

    public String getSeasonName() {
        return SeasonName;
    }

    public String getSeasonDesc() {
        return SeasonDesc;
    }

    
    }
}
public class EnumerTest2 {
    public static void main(String[] args) {
        Enumer2 enumer2 = Enumer2.AUTUMN;
        Enumer2 summer = Enumer2.valueOf("SUMMER");
        summer.show();
        Enumer2[] values = Enumer2.values();
        for (int i=0;i<values.length;i++){
            System.out.println(values[i]);
        }

        System.out.println(enumer2);
    }
}

运行结果:

 

### 回答1: 枚举是一种特殊的数据类型,它可以定义一组常量,这些常量在程序是固定不变的。枚举常量可以用于代表一些特定的状态或类型,比如星期几、颜色、性别等。在Java枚举类型是通过关键字enum来定义的。枚举类型的常量可以通过枚举类型名和常量名来访问,例如:Weekday.MONDAY。枚举类型还可以定义方法和构造函数,以便更好地描述枚举常量的特性和行为。枚举类型Java广泛应用于各种场景,例如状态机、配置管理、错误码等。 ### 回答2: 枚举(Enumeration)在Java是一种特殊的数据类型,它是一组有限且已命名的数据项的集合。枚举类型属于引用数据类型,它的每一个成员都是一个常量对象,且不能改变,可以看作一个常量的集合。 枚举类型的定义格式如下: enum 枚举类型名称{ 枚举值1, 枚举值2, …… 枚举值N; } 其,枚举常量就是指定义在枚举类型的数据项,每个枚举常量都有一个唯一的名称,并且是用常量大写字母来表示的。我们可以使用枚举类型定义变量,枚举类型变量赋值的时候只能取枚举类型的某一个值,不能赋值其他类型的值。 枚举类型的最大优点就在于其具备范围固定、安全性高、易于理解的特点。在处理程序,为了避免输入的数据不符合要求或程序出现异常,我们经常要用到对数据的限制。而对于枚举类型,系统会自动限定它的取值,程序员不需要额外考虑对值的判断,因此大大简化代码,提高程序的可读性、可维护性。 在Java程序的开发枚举类型经常被用在菜单项、操作类型、状态码等等的定义。比如一个操作系统的文件操作类型就可以定义为枚举类型,包括新建、打开、复制、粘贴、剪切等操作,这样就方便了后续的程序设计。 总之,枚举类型Java程序设计已经被广泛应用,在一些常量的定义、一些有限值数据类型的定义上使用枚举类型能够方便代码的编写,提高程序的可读性并减少程序出错的可能。 ### 回答3: 枚举是Java一种特殊的类,它可以用来定义一组固定的值,枚举成员就是这组固定的值。例如,我们可以定义一个枚举类来表示一周的每一天: ``` public enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } ``` 在定义枚举类时,每个枚举成员都是一个对象,它们都是该枚举类的实例。枚举成员的值默认为它们在枚举类的位置,可以通过枚举成员的ordinal()方法获取。 枚举类可以定义成员变量、构造方法、普通方法和静态方法。枚举成员作为对象,可以调用枚举类成员方法。 枚举还可以用在switch语句,例如: ``` DayOfWeek day = DayOfWeek.MONDAY; switch (day) { case MONDAY: System.out.println("Today is Monday."); break; case TUESDAY: System.out.println("Today is Tuesday."); break; case WEDNESDAY: System.out.println("Today is Wednesday."); break; case THURSDAY: System.out.println("Today is Thursday."); break; case FRIDAY: System.out.println("Today is Friday."); break; case SATURDAY: System.out.println("Today is Saturday."); break; case SUNDAY: System.out.println("Today is Sunday."); break; } ``` 以上代码输出的结果是“Today is Monday.”。 枚举的好处是使代码更容易理解和维护,因为它将具有相同含义的常量组织在一起,而且可以避免使用数字表示常量,增加代码的可读性。另外,枚举还可以提供类型安全检查,避免类型错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值