java枚举类长度限制(Java17中枚举类型)
java枚举类长度限制(Java17中枚举类型)根据上面的例子, 这样写虽然说已经知道这个值是什么, 但是具体的还要知道该值和持久化数据的对应关系。for (SexEnum sex : SexEnum.values()) { System.out.println(sex); }枚举类型的方法和构造函数在 Java 中定义枚举类型除了常量以外, 还可以定义方法以及其他的字段。Java 编译器在进行创建枚举类时, 会自动添加一些特殊的方法。比方说:它有一个静态方法,该方法返回了一个数据, 数组中包含了枚举的所有值。先看个基础的例子。 用户信息中的性别。public enum SexEnum{ MALE FEMALE }写个测试类。还可以直接遍历所有的枚举类中的值。
Java 17 中枚举类型 enum思维导图Java 中的枚举是一个特殊的数据类型,它能使变量成为一组预定义的常量,
在 Java 中定义枚举类型的字段名称使用全部的大写进行定义, 多个词组中间加上下划线。
枚举关键字 Enum 。定义格式是:
[修饰符] enum 枚举类{
// 枚举内容
}
对于枚举类说, 在项目中主要的场景就是为了消除业务中的魔法值。 比方说, 数据的状态。 一般会定义 0 无效 1 有效。 如果定义了很多这种 0, 1 魔法值。 就很难在看到代码的时候,知道其中的含义。 这个时候, 就可以考虑使用枚举类型。
先看个基础的例子。 用户信息中的性别。
public enum SexEnum{
MALE FEMALE
}
写个测试类。
还可以直接遍历所有的枚举类中的值。
for (SexEnum sex : SexEnum.values()) {
System.out.println(sex);
}
枚举类型的方法和构造函数
在 Java 中定义枚举类型除了常量以外, 还可以定义方法以及其他的字段。Java 编译器在进行创建枚举类时, 会自动添加一些特殊的方法。比方说:它有一个静态方法,该方法返回了一个数据, 数组中包含了枚举的所有值。
根据上面的例子, 这样写虽然说已经知道这个值是什么, 但是具体的还要知道该值和持久化数据的对应关系。
这个时候构造方法和成员方法就派上用场了。修改 SexEnum 枚举定义。 代码如下:
其中构造函数和枚举类型定义是一一对应的。
MALE(1) FEMALE(2);
private SexEnum(int sex) {
this.sex = sex;
}
其中的静态方法是为了能够根据数据库或者业务中的值,进行枚举对象的获得。
public static SexEnum valueOf(int sex) {
switch (sex) {
case 1:
return SexEnum.MALE;
case 2:
return SexEnum.FEMALE;
default:
return null;
}
}
完整代码和测试代码:
这个时候, 我不光想知道 男 MALE 业务中的魔法值 1。 还想知道代表的汉字意义是什么。 这个时候,可以再新添加一个成员变量。 同样需要返回对应的方法,代码如下。
private final String sexName;
public String getSexName() {
return sexName;
}
并且需要修改构造函数:
private SexEnum(int sex String sexName) {
this.sex = sex;
this.sexName = sexName;
}
修改测试代码:
对于枚举类的比较。 不需要调用 equals 函数, 直接使用 == 比价就好了。
枚举对象中有如下的方法可以使用:
values(): 返回枚举类型中所有的值。可以使用 foreach 进行遍历。他是 valueOf 方法的隐式调用方式。
ordinal(): 该方法可以返回枚举常量对应的索引值。该索引从 0 开始。多数情况下并不需要使用此方法, 它主要是为了给复杂的基于枚举的数据结构使用而设计的。 比方说:EnumSet 和 EnumMap 等。
public final int ordinal()
valueOf(): 该方法返回字符串值的枚举常量值。
public static <T extends Enum<T>> T valueOf(Class<T> enumClass String name)
不过默认情况下, 可以使用隐式的调用方式。
public static T valueOf(String)
针对这几个方法。 values 已经使用过了。 我们看看 ordianl 和 valueOf 的使用方式。看上面的例子就知道了,并没有定义 String 的参数, 所以调用的就是该隐式的方法。
ordinal 例子还用上面的枚举类型的例子。 然后改造测试代码就好了。 测试的代码如下:
System.out.println(SexEnum.valueOf(SexEnum.class "MALE"));
System.out.println(SexEnum.valueOf(SexEnum.class "MALE"));
完整代码演示和测试效果:
对于枚举类型可以实现接口。 但是在实现接口的时候, 每个枚举值都要实现接口的方法。 举个简单的例子。
测试代码如下:
对于枚举的知识点, 应该就这么多了。 如果有疏忽的地方, 欢迎指正。 感谢您的阅读。
点赞,关注,收藏。
希望你的代码写出来都没有bug,毕竟这是一个程序未列出来的特性。