1、枚举类就是class,而且是一个不可以被继承的final类。
2、这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。
(1) 构造器只是在构造枚举值的时候被调用。
(2) 构造器只能私有private,绝对不允许有public构造器。
枚举
package com.godinsec;
public class Main {
public static void main(String[] args) {
SeasonEnum sping = SeasonEnum.SPRING;
System.out.println(sping);
System.out.println("-----------");
SeasonEnum[] sum = SeasonEnum.values();
for (SeasonEnum s : sum) {
System.out.println(s);
}
System.out.println("-----------");
SeasonEnum ss = SeasonEnum.valueOf("WINTER");
System.out.println(ss);
System.out.println("-----------");
SeasonEnum seasonEnum1 = SeasonEnum.getValue(1);
SeasonEnum seasonEnum2 = SeasonEnum.getValue(5);
System.out.println(seasonEnum1);
System.out.println(seasonEnum2);
}
enum SeasonEnum {
SPRING, SUMMER, AUTUMER, WINTER;
public static SeasonEnum getValue(int index){
for(SeasonEnum value:values()){
if(value.ordinal() == index){
return value;
}
}
return SPRING;
}
}
}
输出如下
SPRING
-----------
SPRING
SUMMER
AUTUMER
WINTER
-----------
WINTER
-----------
SUMMER
SPRING
枚举接口
package com.godinsec;
public class Main {
public static void main(String[] args) {
Season1 spring = Season1.SPRING;
System.out.println(spring.getSeasonName());
spring.show();
// 1.values()
Season1[] seasons = Season1.values();
for (int i = 0; i < seasons.length; i++) {
System.out.println(seasons[i]);
}
System.out.println();
String str = "WINTER";
Season1 sea = Season1.valueOf(str);
System.out.println(sea);
}
interface Info {
void show();
}
enum Season1 implements Info {
SPRING("spring", "春暖花开") {
public void show() {
System.out.println("春天在哪里?");
}
},
SUMMER("summer", "夏日炎炎") {
public void show() {
System.out.println("生如夏花");
}
},
AUTUMN("autumn", "秋高气爽") {
public void show() {
System.out.println("秋天是用来分手的季节");
}
},
WINTER("winter", "白雪皑皑") {
public void show() {
System.out.println("冬天里的一把火");
}
};
private final String seasonName;
private final String seasonDesc;
private Season1(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc="
+ seasonDesc + "]";
}
}
}
输出如下
spring
春天在哪里?
Season [seasonName=spring, seasonDesc=春暖花开]
Season [seasonName=summer, seasonDesc=夏日炎炎]
Season [seasonName=autumn, seasonDesc=秋高气爽]
Season [seasonName=winter, seasonDesc=白雪皑皑]
Season [seasonName=winter, seasonDesc=白雪皑皑]