JavaSE - 枚举与泛型
本节学习目标:
- 了解枚举类型的概念;
- 了解并掌握枚举类型的使用方式;
- 了解Enum类及其方法;
- 了解泛型的概念;
- 了解并掌握泛型类的使用方式;
1. 枚举类型
使用枚举类型(Enumeration)可以取代以往定义常量的方式,同时枚举类型还赋予程序在编译时进行检查的功能。
1.1 枚举类型的定义
早期设置常量时,通常将常量放置在接口中,这样在程序中可以直接使用,同时该常量不能被修改:
public interface Color {
String RED = "红色";
String GREEN = "绿色";
String BLUE = "蓝色";
}
JDK1.5之后Java提供了枚举类型,使用枚举类型可以更好的定义常量。枚举类型中的常量使用逗号分隔,并在最后一个常量后使用分号结尾。:
public enum Color {
RED, GREEN, BLUE;
}
Java使用enum
关键字来定义枚举类,需要在程序中使用常量时可以使用枚举类名.常量名
来获取。
枚举类同样可以以内部类形式被定义在一个类的内部:
public class Car {
enum Type {
CAR, TRUCK, BUS;
}
}
常量可以看做是枚举类的一个对象,枚举类中至少需要定义一个常量,并且只能在开头定义。
1.2 枚举类型的成员
1. 成员变量与静态常量
枚举类中允许定义成员变量和静态常量:
public enum Signal {
OK, FAIL;
private String message;
public static final String DESC = "这是一个枚举类";
}
2. 构造方法
枚举类中允许定义构造方法,但构造方法必须被private
修饰符修饰,因为枚举类的常量数量是固定的,不允许再创建常量:
public enum Signal {
OK, FAIL;
private String message;
private Signal() {
}
Signal(String message) {
this.message = message;
}
}
由于枚举类中的构造方法必须被private
修饰符修饰,因此定义构造方法时可以不写private
关键字,默认权限就为private
枚举类一般不写无参构造方法,枚举类的常量直接在枚举类中初始化,这样这些常量可以直接使用:
public enum Signal {
OK("成功"), FAIL("失败");
private String message;
Signal(String message) {
this.message = message;
}
}
按照有参构造方法的参数列表,在常量后加括号,在括号里传入构造方法的参数。
3. 成员方法与静态方法
枚举类中允许定义成员方法和静态方法:
public enum Signal {
OK("成功"), FAIL("失败");
private String message;
Signal(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public static void foo() {
System