Java 枚举enum

在Java中,一个类有可穷举个数的对象时,可以使用枚举表示,枚举中这些对象的数量是一定的,且对象不可以更改;

使用enum关键字表示枚举,默认继承java.lang.Enum类,Java单继承机制,枚举不能再去继承其他类,但是可以实现其他接口;

使用enum关键字表示枚举,在enum中先写常量对象,多个常量对象之间用逗号分隔,最后一个常量后面加分号,然后再写枚举对象中用到的属性和对应的getter方法;

一 创建枚举enum

创建有成员变量的枚举

@Getter
public enum EnumOne {
    // 枚举对象放在最前面, 且对象名字大写
    // 多个枚举对象之间使用逗号分隔, 最后一个对象使用分号
    ONE("one", "一", "1001"),
    TWO("two", "二", "2001"),
    THREE("three", "三", "3001"),
    FOUR("four", "四", "4001");
    // 枚举中的属性使用final关键字修饰, 表示常量不可被修改
    private final String name;
    private final String brief;
    private final String msg;
    // 默认是私有构造器
    EnumOne(String name, String brief, String msg) {
        this.name = name;
        this.brief = brief;
        this.msg = msg;
    }

    @Override
    public String toString() {
        return "EnumOne{" +
                "name='" + name + '\'' +
                ", brief='" + brief + '\'' +
                ", msg='" + msg + '\'' +
                '}';
    }
}

创建没有成员变量的枚举

public enum EnumTwo {
    // 枚举对象放在最前面, 且对象名字大写
    // 多个枚举对象之间使用逗号分隔, 最后一个对象使用分号
    ONE, TWO, THREE, FOUR, FIVE;
}

二 枚举enum常用方法

2.1 枚举名.常量名

public static void main(String[] args) {
    EnumOne enumOne = EnumOne.ONE;
    // 如果枚举EnumOne没有重写toString()方法, 那么打印的是枚举对象名字:
    // ONE
    // 如果枚举EnumOne有重写toString()方法, 那么打印的是枚举对象内容:
    // EnumOne{name='one', brief='一', msg='1001'}
    System.out.println(enumOne);
    // 如果枚举有成员变量和getter方法, 调用如下
    System.out.println("name is: " + enumOne.getName());
    System.out.println("brief is: " + enumOne.getBrief());
    System.out.println("msg is: " + enumOne.getMsg());
}

2.2 values()方法

public static T[] values():获取当前枚举的所有成员,以数组的形式返回;

public static void main(String[] args) {
    EnumOne[] values = EnumOne.values();
    for (EnumOne value : values) {
        // EnumOne{name='one', brief='一', msg='1001'}
        // EnumOne{name='two', brief='二', msg='2001'}
        // EnumOne{name='three', brief='三', msg='3001'}
        // EnumOne{name='four', brief='四', msg='4001'}
        System.out.println(value);
    }
}

2.3 valueOf()方法

public static <T extends Enum<T>> T valueOf(String name):使用指定的字符串创建枚举对象,且指定的字符串在枚举中有对应的常量;

public static <T extends Enum<T>> T valueOf(Class<T> enumClass, String name):指定枚举的Class类型,和枚举中已存在的常量;

public static void main(String[] args) {
    EnumOne enumOne = EnumOne.ONE;
    EnumOne enumOne1 = EnumOne.valueOf("ONE");
    EnumTwo five = EnumOne.valueOf(EnumTwo.class, "FIVE");
    System.out.println(enumOne);
    System.out.println(enumOne1);
    System.out.println(five);
}

2.4 name()方法

public final String name():获取当前枚举常量的名称

public static void main(String[] args) {
    EnumOne enumOne = EnumOne.ONE;
    // result is: ONE
    System.out.println("result is: " + enumOne.name());
}

2.5 ordinal()方法

public final int ordinal():获取当前枚举对象对应的编号次序,即在枚举中定义的顺序,从0开始编号,类似数组的特征(每个枚举元素都有一个索引值,表示索引的位置),初始值从0开始;

public static void main(String[] args) {
    EnumOne enumOne = EnumOne.ONE;
    // result is: 0
    System.out.println("result is: " + enumOne.ordinal());
}

2.6 compareTo()方法

public final int compareTo(E o):比较两个枚举常量的编号,方法返回值是方法调用者的编号前去参数的编号,如果返回值是0,表示同一个枚举对象;

public static void main(String[] args) {
    EnumOne enumOne = EnumOne.ONE;
    EnumOne enumOne2 = EnumOne.ONE;
    EnumOne enumTwo = EnumOne.TWO;
    // result is: 0
    System.out.println("result is: " + enumOne.compareTo(enumOne2));
    // result is: -1
    System.out.println("result is: " + enumOne.compareTo(enumTwo));
}
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值