使用enum聲明,默認直接繼承了java.lang.Enum類,而不是Object類;
枚舉類的對象是固定的,實例個數有限,不可以再new( ),枚舉對象后可以跟()。
枚舉元素必須位於枚舉類體中的最開始部分,枚舉元素后要有分號與其他成員分隔。
枚舉類的構造方法的權限修飾符默認是private;
一旦枚舉對象后面加上{},那么該對象實際是枚舉匿名內部類對象;
所有枚舉類都提供一個靜態的values()方法(返回該枚舉類所有對象組成的數組),便於遍歷所有枚舉對象;
所有枚舉類都提供一個靜態的valueOf(String name)方法, 返回枚舉類中對象名等於 name的對象。
Eg:public enum Color{
RED(), GREEN(){}, BLUE{};
}
package reviewDemo;
//枚舉
enum Color{
Green,Blue,Yellow;
@Override
public String toString() {
String ret = super.toString();
switch (this) {
case Green:
ret = "綠色";
break;
case Blue:
ret = "藍色";
break;
case Yellow:
ret = "黃色";
break;
default:
break;
}
return ret;
}
}
class Personp{
Color c = Color.Blue;
void show(){
System.out.println(c);
}
}
public class Demo18 {
public static void main(String[] args) {
Color []color = Color.values();
for (Color c : color) {
System.out.println(c);
}
new Personp().show();
}
}
輸出:
綠色
藍色
黃色
藍色
枚舉類覆寫接口抽象方法的兩種方式:
在枚舉類中實現接口的抽象方法;
在枚舉匿名內部類中實現接口的抽象方法;
interface I{
void show();
}
enum Color implements I{
RED(){
public void show(){
}
}, GREEN{
public void show(){
}
}, BLUE{
public void show(){
}
};
}
enum Color implements I{
RED(), GREEN, BLUE;
public void show() {
}
}
我的總結:
枚舉不可以new();即便是反射也不可以!
備注:一個類如果沒有構造方法,那么一定有相對應的某個方法可以獲取對象!