ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # 枚举类型 1. **一个可被列举的集合**,因为它是可被列举的,使得它必须有一个可穷尽的范围,例如四季,月份,方向等 >[danger] ##### 枚举推到 * 第一一个类用来去指定某个某个变量声明集合 ~~~ import java.util.Properties; public class EnumDirection { // 定义枚举变量 private String desc; public String getDesc() { return desc; } public EnumDirection(String desc) { this.desc = desc; } public static void main(String[] args) { // 使用枚举 EnumDirection edUp = new EnumDirection("Up"); EnumDirection edDown = new EnumDirection("Down"); EnumDirection edLeft = new EnumDirection("Left"); EnumDirection edRight = new EnumDirection("Right"); System.out.println(edUp.getDesc()); System.out.println(edDown.getDesc()); System.out.println(edLeft.getDesc()); System.out.println(edRight.getDesc()); // TODO: 不足点 需要不停创建实例并且并么有约束性质,使用人还可以随意定义 EnumDirection edCCCC = new EnumDirection("CCCC"); } } ~~~ * 使用final static 等进行限制 ~~~ public class EnumDirection { // 定义枚举变量 private String desc; // 私有构造方法,此时构造方法只能内部使用 private EnumDirection(String desc) { this.desc = desc; } // 2.声明本类类型的引用指向本类类型的对象 public static final EnumDirection UP = new EnumDirection("Up"); public static final EnumDirection DOWN = new EnumDirection("Down"); public static final EnumDirection LEFT = new EnumDirection("Left"); public static final EnumDirection RIGHT = new EnumDirection("Right"); // 通过公有的get方法可以在本类的外部访问该类成员变量的数值 public String getDesc() { return desc; } } ~~~ ~~~ public class App { public static void main(String[] args) throws Exception { EnumDirection ed = EnumDirection.UP; System.out.println(ed.getDesc()); } } ~~~ >[info] ## java 枚举类型 1. java5 中引入了`enum` 关键字,定义枚举类型 2. 枚举值就是当前类的类型,也就是指向本类的对象,默认使用public static final关键字共同修饰,因此采用**枚举类型.的方式调用** 3. 枚举类可以自定义构造方法,但是构造方法的修饰符必须是private,默认也是**私有**的 >[danger] ##### 案例代码 * 因为本质还是当前构造函数赋值,因此获取时候还需要用变量接受,相比来说可以不用重复去书写`public static final` * 如果直接获取是其本身 ~~~ public enum EnumDirection { // 代码编译后大概 public static final EnumDirection UP = new EnumDirection("UP"); UP("UP1"), DOWN("DOWN"), LEFT("LEFT"), RIGHT("RIGHT"), OTHER; // 没有参数 private String desc; private EnumDirection(String desc) { this.desc = desc; } // 如果枚举都是没参数的不用写构造函数默认构造函数没参数 // 因为上面已经有有参数的构造函数因此要使用重载 private EnumDirection() { } // 获取枚举描述 public String getDesc() { return this.desc; } } ~~~ * 使用 ~~~ public class App { public static void main(String[] args) { EnumDirection UP = EnumDirection.UP; System.out.println(UP.getDesc()); // UP1 System.out.println(UP); // UP } } ~~~