Java 枚举类型的基础和高级用法

本文详细探讨了Java枚举类型的使用方法及其优势,包括常用的列举、方法覆盖、接口实现、构造抽象方法等内容,展示了如何通过枚举替代传统常量定义,提升代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    java枚举类型自从jdk1.5产生以来,在自己的工作用很少使用到,或许还是使用以前常量定义的方式,所以没有意识到枚举类型是可以替代的,关于使用常量方式来列举的用法不再陈述,相信在使用过程中大家如果会总结,总会发现一些弊端,下面看看枚举类型的用法,是可以替代上述的常量的方式列举事物的。

  1.     最为常用的列举:
    public enum Color { 
    RED, GREEN, BLANK, YELLOW 
    }
  2. 往枚举中添加自定义方法
    public enum Color { 
    RED("红色", 1), GREEN("绿色", 2), YELLO("黄色", 4); 
    // 成员变量 
    private String name; 
    private int index; 
    // 构造方法 
    private Color(String name, int index) { 
    this.name = name; 
    this.index = index; 
    } 
    // 普通方法 
    public static String getName(int index) { 
    for (Color c : Color.values()) { 
    if (c.getIndex() == index) { 
    return c.name; 
    } 
    } 
    return null; 
    } 
    // get set 方法 忽略 
    }

    上面的getName方法也就是自己定义的一个静态方法,可以直接使用,也就是说在枚举类型的内部,可以存在与枚举相关的方法,但是因为枚举本身被定义为final了,所以这种方法一般都是返回数据。 
  3. 覆盖枚举的方法
    public enum Color {
    RED("红色", 1), GREEN("绿色", 2), YELLO("黄色", 4);
    // 成员变量
    private String name;
    private int index;
    // 构造方法
    private Color(String name, int index) {
        this.name = name;
        this.index = index;
    }
    //覆盖方法
    @Override
    public String toString() {
        return this.index+"-->"+this.name;
    }
     // get set 方法 忽略
    }

    这里的toString 方法,在没有重新之前,默认是可以直接调用的,但是其返回值为枚举的常量值,如:RED或YELLO等,但是复写之后,就可以实现自己定义的方式。
  4. 枚举实现接口
    public interface Behaviour {
    void print();
    String getInfo();
    }
    
    
    public enum Color implements Behaviour{
    RED("红色", 1), GREEN("绿色", 2), YELLO("黄色", 4);
    // 成员变量
    private String name;
    private int index;
    // 构造方法
    private Color(String name, int index) {
        this.name = name;
        this.index = index;
    }
    //接口方法
    @Override
    public String getInfo() {
        return this.name;
    }
    //接口方法
    @Override
    public void print() {
        System.out.println(this.index+":"+this.name);
    }
    }

    通过实现接口,能够实现其他的一些变量和接口中的方法,为枚举开拓更多的用法。
  5. 使用接口组织枚举
    public interface Food { 
    enum Coffee implements Food{ 
    BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO 
    } 
    enum Dessert implements Food{ 
    FRUIT, CAKE, GELATO 
    } 
    }
    6.构造抽象方法,要求枚举实现
    public enum Phone{ 
    APPLE {double totalprice(double a,double b){return a+b;}}, 
    HUAWEI {double totalprice(double a,double b){return a+b-2;}}, 
    SUMSANG {double totalprice(double a,double b){return a+b-4;}};
    
    abstract totalprice(doublea,double b); 
    }

    这样,就可以讲不同的行为与每个枚举常量关联起来,使得每个枚举常量本身带有一个方法,最后通过常量类型调用该方法就是得到相应的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值