1. 为枚举类添加有参构造函数
public enum Grade {
A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");
//添加一个有参数的构造方法,但枚举的构造方法必须是私有的
private String value;
private Grade(String value) {
this.value = value;
}
//再提供一个公共的get方法
public String getValue() {
return value;
}
}
测试一下import static org.junit.Assert.*;
import org.junit.Test;
public class GradeTest {
@Test
public void test() {
Grade grade = Grade.C;
System.out.println(grade.getValue());
}
}
结果: 79-70
2. 使用匿名内部类来实现抽象方法
public enum Grade {
//通过匿名内部类来复写抽象方法
A("100-90"){
@Override
public String toLocalGrade() {
return "优秀";
}
},B("89-80"){
public String toLocalGrade(){
return "良好";
}
},C("79-70"){
public String toLocalGrade(){
return "中等";
}
},D("69-60"){
public String toLocalGrade(){
return "较差";
}
},E("59-0"){
public String toLocalGrade(){
return "不及格";
}
};
//添加一个有参数的构造方法,但枚举的构造方法必须是私有的
private String value;
private Grade(String value) {
this.value = value;
}
//再提供一个公共的get方法
public String getValue() {
return value;
}
//定义一个方法,获取一个本地化的成绩
public abstract String toLocalGrade();
}
测试一下:
import static org.junit.Assert.*;
import org.junit.Test;
public class GradeTest {
@Test
public void test() {
Grade grade = Grade.C;
System.out.println(grade.getValue());
System.out.println(grade.toLocalGrade());
}
}
结果:
79-70
中等