您的位置:首页 > 新闻 > 会展 > Java 枚举enum

Java 枚举enum

2025/8/5 9:19:24 来源:https://blog.csdn.net/weixin_45339291/article/details/142056574  浏览:    关键词: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;}@Overridepublic 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: ONESystem.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: 0System.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: 0System.out.println("result is: " + enumOne.compareTo(enumOne2));// result is: -1System.out.println("result is: " + enumOne.compareTo(enumTwo));
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com