Java基础增强---枚举

一、定义枚举的构造函数、方法和字段举例:

1、代码:
package cn.itcast.enumeration;

import org.junit.Test;

public class Demo1 {
    @Test
    public void test() {
        print(Grade.B);
    }

    public void print(Grade g) {
        System.out.println(g.getValue());
    }
}

/*
 * class Grade { 
 * private Grade() { }
 * 
 * public static final Grade A = new Grade();
 * public static final Grade B = new Grade(); 
 * public static final Grade C = new Grade(); 
 * public static final Grade D = new Grade(); 
 * public static final Grade E = new Grade(); 
 * } 
 * 上述就等价于enum Grade{A,B,C,D,E}
 */

enum Grade {
    // 该类只有有参构造函数,所以不同于上述,必须在构造时传入String类型
    A("90-100"), B("80-89"), C("70-79"), D("60-69"), E("0-59");
    private String value;// 封装每个对象的分数

    private Grade(String value) {
        this.value = value;
    }

    public String getValue() {
        return this.value;
    }
}
2、Junit运行test函数结果:

这里写图片描述

二、枚举的抽象方法示例

1、代码:
package cn.itcast.enumeration2;

import org.junit.Test;

public class Demo1 {
    @Test
    public void test() {
        print(Grade.B);
    }

    public void print(Grade g) {
        System.out.println(g.localValue()+"---"+g.getValue());
    }
}

/*
 * class Grade { private Grade() { }
 * 
 * public static final Grade A = new Grade(); public static final Grade B = new
 * Grade(); public static final Grade C = new Grade(); public static final Grade
 * D = new Grade(); public static final Grade E = new Grade(); } 上述就等价于enum
 * Grade{A,B,C,D,E}
 */

// 带抽象方法的枚举
enum Grade {
    // 该类只有有参构造函数,所以不同于上述,必须在构造时传入String类型
    A("90-100") {
        public String localValue() {
            return "优";
        }
    },
    B("80-89") {
        public String localValue() {
            return "良";
        }
    },
    C("70-79") {
        public String localValue() {
            return "一般";
        }
    },
    D("60-69") {
        public String localValue() {
            return "差";
        }
    },
    E("0-59") {
        public String localValue() {
            return "不及格";
        }
    };
    private String value;// 封装每个对象的分数

    private Grade(String value) {
        this.value = value;
    }

    public String getValue() {
        return this.value;
    }

    public abstract String localValue();
}
2、Junit运行test函数结果:

这里写图片描述

三、枚举的常用方法(示例)

package cn.itcast.enumeration2;

import org.junit.Test;

public class Demo1 {
    // 测试枚举的常用方法
    @Test
    public void test2() {
        System.out.println(Grade.C.name());
        System.out.println(Grade.C.ordinal());

        String str = "B";
        // Grade z = Grade.valueOf(Grade.class,str);
        Grade z = Grade.valueOf(str);
        System.out.println(z);

        //values方法在api里面是没有的,返回一个枚举数组
        Grade gs[] = Grade.values();
        for (Grade g1 : gs) {
            System.out.println(g1);
        }
    }
}

// 带抽象方法的枚举
enum Grade {
    // 该类只有有参构造函数,所以不同于上述,必须在构造时传入String类型
    A("90-100") {
        public String localValue() {
            return "优";
        }
    },
    B("80-89") {
        public String localValue() {
            return "良";
        }
    },
    C("70-79") {
        public String localValue() {
            return "一般";
        }
    },
    D("60-69") {
        public String localValue() {
            return "差";
        }
    },
    E("0-59") {
        public String localValue() {
            return "不及格";
        }
    };
    private String value;// 封装每个对象的分数

    private Grade(String value) {
        this.value = value;
    }

    public String getValue() {
        return this.value;
    }

    public abstract String localValue();
}
/*
// 用单态设计模式定义出了一个类
enum A { // class
    A; // Object
}
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值