如何定义一个枚举类?
- 1 //定义了4个等级
- 2 enum Level{
- 3 A,B,C,D
- 4 }
复制代码
枚举类的实质: - class Level{
- public static final Level A = new Level();
- public static final Level B = new Level();
- public static final Level C = new Level();
- public static final Level D = new Level();
- }
复制代码
枚举类可以定义构造方法,属性,方法 - enum Level{
- A("85~100","优"),
- B("75~84","良"),
- C("60~74","中"),
- D("60以下","差");
- private String score;
- private String ctype;
- private Level(String score,String ctype){ //构造方法必须是私有的
- this.score = score ;
- this.ctype = ctype;
- }
- public String getscore(){
- return this.score;
- }
- public String getctpye(){
- return this.ctype;
- }
- }
- public class Enumation {
- public static void main(String[] args) {
- System.out.println(Level.A.getscore());
- System.out.println(Level.A.getctpye());
- Level[] ls = Level.values();
- }
- }
- //输出结果
- //85~100
- //优
复制代码
带抽象方法的枚举类- enum Level{
- A("85~100"){
- @Override
- public String getctpye() {
- return "优";
- }
- },
- B("75~84") {
- @Override
- public String getctpye() {
- return "良";
- }
- },
- C("60~74") {
- @Override
- public String getctpye() {
- return "中";
- }
- },
- D("60以下") {
- @Override
- public String getctpye() {
- return "差";
- }
- };
- private String score;
- private Level(String score){
- this.score = score ;
- }
- public String getscore(){
- return this.score;
- }
- public abstract String getctpye(); //每个对象都要重写抽象方法
- }
复制代码
常用方法 - public class Enumation {
- public static void main(String[] args) {
- System.out.println(Level.C.name()); //返回枚举常量的名称
- System.out.println(Level.C.ordinal()); //返回枚举常量的序号(下标从0开始)
- Level[] ls = Level.values(); //遍历枚举类型
- for(Level l :ls){
- System.out.println(l);
- }
- String letter = "B" ;
- //返回带指定名称的指定枚举类型的枚举常量,若letter为非枚举类型会抛异常java.lang.IllegalArgumentException: No enum constant
- Level b = Level.valueOf(letter);
- System.out.println(b.B);
- }
- }
复制代码
输出:
C
2
A
B
C
D
B |