Java枚举
开发工具与关键技术:工具:MyEclipse 10 技术:Java
作者:范子超 撰写时间:2019-05-07
枚举的简单介绍:
枚举的作用就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。 枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段 无法实现这一目标。
使用枚举可以限制取值范围、提高代码的可读性、便于维护。
- 使用enum声明枚举,枚举默认直接继承了java.lang.Enum类,而不是 Object 类;
- 因为枚举已经继承了java.lang.Enum类,所以它无法再继承其他类。
- 枚举类的对象是固定的,实例个数有限,不可以再new( ),枚举对象后可以跟()。
- 枚举元素必须位于枚举类体中的最前面,枚举元素之间使用逗号分隔。
- 枚举类的构造方法的访问控制符默认是private,不能使用其他修饰符。
- 一旦枚举对象后面加上{},那么该对象实际是枚举匿名内部类对象;
- 所有枚举类都提供一个静态的values()方法(返回该枚举类所有对象组成的数组),便于遍历所有枚举对象;
- 所有枚举类都提供一个静态的valueOf(String name)方法, 返回枚举类中对象名等于name的对象。
枚举的声明格式: enum 枚举名称 { 枚举元素1,枚举元素2,…,枚举元素N; } 例如:
enum enumDemo {SPRING, SUMMER, AUTUMN, WINTER;}
枚举最简单的使用方法,使用switch循环设置每个枚举元素所对应的返回信息。
enum enumDemo { SPRING, SUMMER, AUTUMN, WINTER; public String toString() { String name = null; switch (this) { case SPRING: name = "春季"; break; case SUMMER: name = "夏季"; break; case AUTUMN: name = "秋季"; break; case WINTER: name = "冬季"; break; } return name; } }
执行:System.out.println(enumDemo.WINTER.toString()); //打印结果:冬季
在枚举内定义抽象方法,如果枚举内定义了抽象方法,则需要让这个枚举内的所有枚举元素都实现这个抽象方法,否则编译不通过:
enum enumDemo1 { SPRING { @Override public String show() { return "春季"; } }, SUMMER { @Override public String show() { return "夏季"; } }, AUTUMN { @Override public String show() { return "秋季"; } }, WINTER { @Override public String show() { return "冬季"; } }; public abstract String show(); }
执行:System.out.println(enumDemo1.SUMMER.show());//打印结果:夏季
如果要为每个枚举值指定属性,则必须声明一个参数个数和类型和枚举值类型对应的构造器,否则编译不通过:
enum enumDemo2 { SPRING("春季"), SUMMER("夏季"), AUTUMN("秋季"), WINTER("冬季"); private String name; enumDemo2(String name) { this.name = name; } public String getEnumNmae() { return this.name; } }
执行:System.out.println(enumDemo2.AUTUMN.getEnumNmae());//打印结果:秋季
枚举实现接口有两种写法:一种是直接在枚举内实现,还有一种是把枚举元素变成枚举匿名内部类,然后在这个枚举匿名内部类中实现:
//第一种:直接在枚举内实现 enum enumDemo3 implements A { SPRING("春季"), SUMMER("夏季"), AUTUMN("秋季"), WINTER("冬季"); private String name; enumDemo3(String name) { this.name = name; } @Override public String getName() { return this.name; } } //第二种:在枚举匿名内部类中实现 enum enumDemo4 implements A { SPRING { @Override public String getName() { return "春季"; } }, SUMMER { @Override public String getName() { return "夏季"; } }, AUTUMN { @Override public String getName() { return "秋季"; } }, WINTER { @Override public String getName() { return "冬季"; } }; }
执行:System.out.println(enumDemo3.SPRING.getName());// 打印结果:春季
执行:System.out.println(enumDemo4.SPRING.getName());// 打印结果:春季
总结:可以将枚举理解为一个普通类,可以在它里面定义构造器,定义变量,定义方法,也可以定义抽象方法,还可以实现一个或多个接口,它和普通类的区别就是普通类可以new,而枚举不可以new,并且枚举中的构造器会被强制私有化。
- java高级-枚举2
- java 基础加强 类的枚举
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
- Java 枚举:实现接口
- Java定义枚举
- java枚举和Struts2的使用
- K:java枚举的常见用法
- java enum 枚举类型
- 黑马程序员--java高新技术----枚举
- Java 枚举用法详解
- java enum(枚举)使用详解 + 总结
- java enum枚举类型
- java基础加强(枚举,反射,增强for循环,可变参数,自动拆箱装箱,内省)
- java--加强之 jdk1.5简单新特性,枚举,注解
- Java枚举(enum)的使用
- JAVA入门基础--浅谈枚举Enum类型
- Java 利用枚举实现单例模式
- java新特性之静态导入、自动装箱和拆箱、增强for循环、可变参数、枚举
- java 枚举(括号赋值)
- java中的枚举介绍与简单应用