首先看一個例子:
package test;
public enum EnumTest {
STUDNT("liming", 12);
String name;
int age;
EnumTest(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public static void main(String[] args) {
System.out.println("name: "+ EnumTest.STUDNT.getName() + "\n"
+ "age is: "+ EnumTest.STUDNT.getAge());
}
}
上面這就是一個簡單的枚舉類。
要想使用枚舉,首先認識到他就是一個類,不允許調用它的構造方法進行初始化。
那麼,在使用枚舉類的時候,是在什麼時候進行初始化的呢? 接下來,我們一步一步的進行講解。
首先,看下面的這段代碼:
System.out.println("name: "+ EnumTest.STUDNT.getName() + "\n"
+ "age is: "+ EnumTest.STUDNT.getAge());
在上面的這段代碼中,我們調用了EnumTest的STUDN,getName() 和getAge()方法,那麼程序是怎麼知道,要打印的那麼和age 就是STUDNT後面對應的值呢?
其原因就是,在執行
EnumTest.STUDNT
的時候,調了構造器:
EnumTest(String name, int age) {
this.name = name;
this.age = age;
}
進行了初始化,將“liming”賦值給了name,將12賦值給了age。
所以當調用getName()和getAge的時候,知道name是liming,年齡是12了。