1 简介
1.1 枚举的四大基本方法
1.1.1 四种方法的比较
名称 | 返回值类型 | 含义 |
---|---|---|
values | 枚举对象数组 | 返回枚举对象数组 |
valueOf | 枚举对象 | 返回枚举对象 |
ordinal | Integer | 枚举对象在枚举类中的索引位置 |
compareTo | Integer | 比较两个枚举对象的索引,A.compareTo(B)=A的索引 减去 B的索引 |
1.1.2 举个栗子
准备一个基类
enum Color {
RED,GREEN,YELLOW
}
测试
@Test
public void test01(){
Color red = Color.RED;
System.out.println(red);
}
> > >
RED
@Test
public void test02() {
for (Color value : Color.values()) {
System.out.println(value);
}
}
> > >
RED
GREEN
YELLOW
@Test
public void test05(){
System.out.println(Color.valueOf("RED").ordinal());
System.out.println(Color.valueOf("GREEN").ordinal());
}
> > >
0
1
@Test
public void test06(){
System.out.println(
Color.RED.compareTo(Color.GREEN)
);
}
> > > -1
1.2 概念常识
- jdk1.5之后新增了枚举
- java 中的每一个枚举类都继承自 java.lang.Enum 类
- 每一个成员对象都是 public static final类型
2 枚举的使用
2.1 使用方法1
基类
public enum Color{
RED,GREEN,YELLOW;
}
测试类
import org.junit.jupiter.api.Test;
class ColorTest {
@Test
public void test01(){
Color red = Color.RED;
System.out.println(red);
}
@Test
public void test02() {
for (Color value : Color.values()) {
System.out.println(value);
}
}
@Test
public void test03() {
Color green = Color.GREEN;
switch (green) {
case RED:
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case YELLOW:
System.out.printf("黄色");
break;
}
}
@Test
public void test04() {
for (Color value : Color.values()) {
System.out.println(value + " at index of " + value.ordinal());
}
System.out.println(Color.valueOf("RED"));
}
@Test
public void test05(){
System.out.println(Color.valueOf("RED").ordinal());
System.out.println(Color.valueOf("GREEN").ordinal());
}
@Test
public void test06(){
System.out.println(
Color.RED.compareTo(Color.GREEN)
);
}
}
2.2 使用方法2
基类
enum ColorMax {
RED{
public String getColor(){
return "红色";
}
public Integer getValue() {
return 1;
}
},
GREEN{
public String getColor(){
return "绿色";
}
public Integer getValue() {
return 2;
}
},
BLUE{
public String getColor(){
return "蓝色";
}
public Integer getValue() {
return 3;
}
};
public abstract String getColor();
public abstract Integer getValue();
}
测试类
import org.junit.jupiter.api.Test;
class ColorMaxTest {
@Test
public void test01(){
ColorMax[] values = ColorMax.values();
for (ColorMax value : values) {
System.out.println(value.getColor() +" 's index is "+value.ordinal()+" and the value is "+value.getValue());
}
}
}
2.3 使用方法3
基类
public enum ColorMaxA {
RED("红色",1),
YELLOW("黄色",2),
GREEN("绿色",3)
;
private String color;
private Integer key;
ColorMaxA(String color, int key) {
this.color = color;
this.key = key;
}
public Integer getKey() {
return key;
}
public String getColor() {
return color;
}
}
测试类
import org.junit.jupiter.api.Test;
class ColorMaxATest {
@Test
public void test01(){
for (ColorMaxA value : ColorMaxA.values()) {
System.out.println(value.getColor() + " ’s key is " + value.getKey());
}
}
}