枚举类型Enum
枚举类Enum
what:
首先他是个类 特殊的类 不过是
原版:
public enum A {
X,Y,Z;
}
反编译字节码:
public final class A extends java.lang.Enum<A>{
public static final A X = new A(); //修饰变量
public static final A Y = new A();
public static final A Z = new A();
public static A[] values();
public static A valueOf(java.lang.String)
}
//十分特殊 是个final class:阻止类被继承 类的行为不会被更改
//类A 继承了Enum属性 并且还给Enum类 类型参数
//java.lang 是 Java 编程语言里一个极为关键的包,它默认会被每个 Java 程序自动导入,无需显式地使用 import 语句来引入
public final class A extends javalangEnum<A>{
}
/*
public static final A X = new A();
public static final A Y = new A();
public static final A Z = new A();
analys:
X Y Z 是A类实例化
A是public final class 不可继承类
static:
what:
表示变量属于该类本身可以随时访问
static 修饰内部类
public:
what:
表示只要能访问到该变量的类 就能访问该变量
1.使用static变量 不用实例化对于public的变量也可以直接访问,
2.对于不是static的变量必须实例化进行访问
final:
what:
修饰变量:表示变量不可以被改变
修饰类:类无法被继承重写方法over
combinition:
public static:
what:
修饰变量/内部类:公共 属于该类的变量
public final:
what:
公共的 无法被修改的
public static final:
公共的 属于该类的静态内部类 无法被修改
public static final A X = new A();
summarize the analysis:
内部类 公共的 属于A类的静态类 无法被改变的X
这些 X Y Z 只属于A 并且创造的 X Y Z 不会创建 新的X Y Z因为 X Y Z 是静态的始终属于A
public static A[] values();
analysis:
Weekday[] allWeekdays = Weekday.values();
Weekday.values() 返回一个包含 MONDAY 到 SUNDAY 所有枚举实例的数组
example:
enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
public class Main {
public static void main(String[] args) {
// 调用 values() 方法获取枚举实例数组
Weekday[] allWeekdays = Weekday.values();
for (Weekday weekday : allWeekdays) {
System.out.println(weekday);
}
}
}
public static A valueOf(java.lang.String)
analysis:
Weekday weekday = Weekday.valueOf(input);
input = 输入 字符串 "MONDAY" 返回枚举类型 枚举类型MONDAY
枚举类型MONDAY 是A类 有自己的方法 可以输入自己做出操作
example:
enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
public void performTask() {
switch (this) {
case MONDAY:
System.out.println("开始新一周的工作,整理本周计划");
break;
case TUESDAY:
System.out.println("参加团队会议,汇报工作进展");
break;
// 其他星期的任务...
default:
break;
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入星期名称(如 MONDAY):");
String input = scanner.nextLine();
try {
Weekday weekday = Weekday.valueOf(input);
weekday.performTask();
} catch (IllegalArgumentException e) {
System.out.println("输入的星期名称无效,请重新输入。");
}
scanner.close();
}
}