Java枚举类型

1.使用enum分发:enum实例不是类型,不能将enum实例作为参数的类型,无法重载eval()。使用构造器来初始化每个enum实例。

interface Letter2<T extends Letter2<T>> {
    SoThat compete(T upLo);
}

public class Test3 {
    enum UpLo implements Letter2<UpLo> {
        Aa(BB, AA, CC),
        Bb(CC, BB, CC),
        Cc(AA, AA, BB);
        private SoThat s1;
        private SoThat s2;
        private SoThat s3;

        UpLo(SoThat s1, SoThat s2, SoThat s3) {
            this.s1 = s1;
            this.s2 = s2;
            this.s3 = s3;
        }

        @Override
        public SoThat compete(UpLo upLo) {
            switch (upLo) {
                case Aa:
                    return s1;
                case Bb:
                    return s2;
                case Cc:
                    return s3;
            }
            return null;
        }
    }

    public static void main(String[] args) {
        UpLo u1 = UpLo.Aa;
        UpLo u2 = UpLo.Cc;
        System.out.println(u1.compete(u2));
    }
}

2.使用常量相关方法:为enum实例编写方法,为每个enum实例赋予各自不同的行为。要实现常量相关的方法,需要为enum定义一个或多个abstract方法,然后为每个enum实例实现该抽象方法,可覆盖常量相关的方法。

public enum Test4 {
    SPRING {
        String getInfo() {
            return "SPRING";
        }
    },
    SUMMER {
        String getInfo() {
            return "SUMMER";
        }
    },
    AUTUMN {
        String getInfo() {
            return "AUTUMN";
        }
    },
    WINTER {
        String getInfo() {
            return "WINTER";
        }
    };

    abstract String getInfo();

    public static void main(String args[]) {
        for (Test4 method : values()) {
            System.out.println(method.getInfo());
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值