Java - 枚举
1 什么是枚举?
枚举是一个引用类型,枚举是一个规定了取值范围的数据类型。
2 注意事项
- 定义枚举使用enum关键字。
- 枚举中主要包含常量, 多个常量使用逗号隔开,最后的分号可写可不写。
- 枚举中也可以包含属性,方法,和私有构造方法,但是必须在常量的后面 (一般不写)
3 好处
好处:枚举变量不能使用其他的数据,只能使用枚举中常量赋值,提高程序安全性。
4 枚举的本质
- 枚举是一个最终类(不能被继承),并继承Enum抽象类。
- 枚举中常量是当前类型的静态常量。
代码演示:
Gender:
public enum Gender {
MALE,FEMALE;
private int value;
public void method() {
System.out.println("这是个方法");
}
Gender(){
}
}
反编译Gender: ( 枚举的本质)
import java.io.PrintStream;
public final class Gender extends Enum
{
public static final Gender MALE;
public static final Gender FEMALE;
private int value;
private static final Gender $VALUES[];
public static Gender[] values()
{
return (Gender[])$VALUES.clone();
}
public static Gender valueOf(String name)
{
return (Gender)Enum.valueOf(StageOne/day25/demo1/TestEnum/Gender, name);
}
public void method()
{
System.out.println("这是个方法");
}
private Gender(String s, int i)
{
super(s, i);
}
static
{
MALE = new Gender("MALE", 0);
FEMALE = new Gender("FEMALE", 1);
$VALUES = (new Gender[] {
MALE, FEMALE
});
}
}
Student:
public class Student {
private String name;
private int age;
private Gender gender;
//构造方法, get/set方法, 重写toString();
}
Test:
public class Test {
public static void main(String[] args) {
Student student = new Student("张三", 19, Gender.MALE);
System.out.println(student);
}
}