java枚举

枚举

对于有些与类无关的对象,可以使用枚举能限定对象。例如我们知道一共有四个季节,除了春夏秋冬外,不会有其他的季节

写一个枚举类Season

public enum Season {
    
}

注意这个类不能继承,因为其隐式继承了Enum类,java是单继承机制,但可以实现接口

在里面像普通类一样写季节的名称、气候属性,以及构造器及get方法

public enum Season {
    private String name;
    private String desc;

    Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
}

现在是一个重要的步骤,我们只要春夏秋冬四个常量对象

在枚举类Season中写入枚举常量对象

public enum Season {    
	//定义枚举常量对象,写在行首
    //本质为public static final Season SPRING = new Season("春天","温暖")
    SPRING("春天", "温暖"),
    SUMMER("夏天", "炎热"),
    AUTUMN("秋天", "凉爽"),
    WINTER("冬天", "寒冷");
	//多个对象间用逗号 , 隔开,在枚举的对象列表最后分号
   
    private String name;
    private String desc;

    Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
}

SPRING常量对象本质为public static final Season SPRING = new Season(“春天”,“温暖”),可以看出,其在加载类的时候已经创建了对象

现在,在main方法中只能调用SPRING,SUMMER,WINTER或WINTER对象

public class Main{
    public static void main(String[] args) {
        System.out.println(Season.SUMMER.getDesc);
        System.out.println(Season.WINTER);//枚举类的toString方法,返回常量对象名
    }
}

输出

炎热
WINTER

注意:当常量对象无参数时,可以省略括号

public enum A{
    a,b(10),c;
    
    A() {
        
    }
    A(int num) {
        
    }
}

枚举的一些方法

//name 返回当前对象名(常量名),子类中不能重写
System.out.println(Season.SPRING.name());//SPRING

//ordinal 返回当前对象在对象列表的位置下标
System.out.println(Season.WINTER.ordinal());//3

//values 返回当前枚举类中所有常量
for (Season s : Season.values()) {
    System.out.println(s);//将每个常量名按顺序输出
}

//valueOf 将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常IllegalArgumentException
Season season = Season.valueOf("SPRING");
//Season season0 = Season.valueOf("SPRIN");//错误

//compareTo 比较两个枚举常量的编号
//Season.WINTER[3] - Season.SUMMER[1]
System.out.println(Season.WINTER.compareTo(Season.SUMMER));//2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值