枚举
# 枚举
Class Enum<E extends Enum
<E>
> java.lang.Object java.lang.Enum<E>
枚举是一种特殊的数据类型,也是常量的集合,主要作用是限制指定内容
特点:
- 类型安全
- 可以和程序其他部分完美交交互
- 运行效率高
# 枚举中的构造方法
在枚举类型中添加构造方法前提该构造方法必须为private权限修饰符
public enum Constants{//Constants枚举名称
Constants_A,
Constants_B;
private String name;
private Constants(String name){
name.this = name;
}
}
# 常量设置
当定义枚举类型时,每个枚举类型的成员都可以看做实例,类型默认修饰为 final
、public
、static
,当使用时直接调用对应的名称即可
public enum Level{//Constants枚举名称
LOW(30) , MEDIUM(15) , HIGH(7) , URGENT(1);
private int levelValue;
// 有参构造器
private Level(int levelValue) {
this.levelValue = levelValue;
}
// 获取枚举数据nam
public int getLevelValue() {
return levelValue;
}
}
# 接口实现
枚举已经继承了Java.lang.Enum类,Java 不支持多继承,所以枚举对象不能再继承其他类
public interface Lshow(){
void show();
}
public enum Level implements Lshow(){
LOW(100){
public void show(){
···
}
},
//注意:每个常量要有逗号分隔
URGENT(1){
public void show(){
···
}
}
private int levelValue;
private Level(int levelValue) {
this.levelValue = levelValue;
}
public int getLevelValue() {
return levelValue;
}
}
# 方法
返回 | 方法 | 说明 |
---|---|---|
int | compareTo(<E> o) | 获取 两个枚举常量比较的顺序 |
int | ordinal() | 获取 枚举常量的索引位置 |
Class<?> | getDeclaringClass() | 获取 枚举常量的类型对应的Class对象 |
String | name() | 获取 枚举常量的名称 |
static<T extends Enum<T>> T | static valueOf(Class<T> enumType , String name) | 获取 指定枚举类型的枚举常量 |
注意:
- 枚举属性不要试图修改(一般定义的都是常量)
- 枚举类默认继承 java.lang.Enum类
- 枚举类不能有子类,因枚举类默认被final修饰
- 只能有private构造方法 switch中使用枚举时,直接使用常量名,不用携带类名
- 不能定义name属性,因自带name属性
# 代码实例
class Demo {
enum ELevel {
/**
* LOW : 最大 ; URGENT : 最小
*/
LOW(100), URGENT(1);
private int value;
ELevel(int value){
this.value = value;
}
public int getValue() {
return value;
}
}
interface LLevel {
final int LOW = 100;
final int URGENT = 1;
}
/**接口使用*/
public void showL(int l){
switch (l){
case LLevel.URGENT :
System.out.println("URGENT");
break;
case LLevel.LOW :
System.out.println("LOW");
break;
default:
System.out.println("错误");
}
}
/**枚举使用*/
public void showE(ELevel e){
switch (e){
case URGENT:
System.out.println("URGENT");
break;
case LOW:
System.out.println("LOW");
break;
default:
System.out.println("错误");
}
}
public static void main(String[] args) {
Demo d = new Demo();
d.showL(LLevel.URGENT);
d.showE(ELevel.LOW);
System.out.println("ELevel.LOW.name() : " + ELevel.LOW.name());
System.out.println("ELevel.URGENT.ordinal() : " + ELevel.URGENT.ordinal());
System.out.println("Enum.valueOf(ELevel.class , \"URGENT\") : " + Enum.valueOf(ELevel.class , "URGENT"));
}
}
上次更新: 2023/03/12, 00:43:49