内部类枚举

import lombok.*;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    private Integer id;
    private String name;
    private Integer status;
    private String memo;

    @Getter
    @AllArgsConstructor
    enum StatusEnum {
        SUCCESS(1, "发放成功"),

        FAIL(2, "发放失败"),

        SURPASS(3, "超过发放次数");


        private Integer code;

        private String message;
    }
}
public class Test_01 {
    public static void main(String[] args) {
        Person p = Person.builder()
                .id(0)
                .name("wangzs")
                .status(Person.StatusEnum.FAIL.getCode())
                .memo(Person.StatusEnum.FAIL.getMessage()).build();
        System.out.println(p);

        Person p2 = Person.builder()
                .id(0)
                .name("wangzs2")
                .status(Person.StatusEnum.SUCCESS.getCode())
                .memo(Person.StatusEnum.SUCCESS.getMessage()).build();
        System.out.println(p);
    }
}

Java内部自定义枚举类,可按如下步骤操作。首先需明确枚举是 JDK 1.5 后出现的新特性,可定义有限数量的可穷举数据集,即当确定一个类有几个对象时,可使用枚举。 ### 自定义枚举类(JDK 1.5 前) 在类内部自定义枚举类,要声明枚举对象的属性,用 `private final` 修饰;私有化类的构造器,并给对象属性赋值;提供当前枚举类的多个对象,用 `public static final` 修饰;还可根据需求提供获取属性的方法和 `toString()` 方法。示例如下: ```java public class OuterClass { // 内部自定义枚举类 static class Season { // 1.声明Season对象的属性:private final修饰 private final String seasonName; private final String seasonDesc; // 2.私有化类的构造器,并给对象属性赋值 private Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } // 3.提供当前枚举类的多个对象:public static final public static final Season SPRING = new Season("春天", "春暖花开"); public static final Season SUMMER = new Season("夏天", "夏日炎炎"); public static final Season AUTUMN = new Season("秋天", "秋高气爽"); public static final Season WINTER = new Season("冬天", "冰天雪地"); // 4.其他诉求1:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } // 4.其他诉求2:提供toString() @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } } public static void main(String[] args) { Season spring = Season.SPRING; System.out.println(spring); } } ``` ### 使用 `enum` 关键字创建枚举类 使用 `enum` 关键字创建枚举类更简洁。在类内部使用 `enum` 定义枚举类时,枚举常量需放在最前面,多个常量用逗号分隔,最后一个常量可加分号也可不加。示例如下: ```java public class OuterClass2 { // 内部使用enum关键字创建枚举类 enum Season { SPRING("春天", "春暖花开"), SUMMER("夏天", "夏日炎炎"), AUTUMN("秋天", "秋高气爽"), WINTER("冬天", "冰天雪地"); private final String seasonName; private final String seasonDesc; Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } } public static void main(String[] args) { Season summer = Season.SUMMER; System.out.println(summer); } } ``` ### 枚举类实现接口 枚举类也可实现接口。在类内部枚举类实现接口时,每个枚举常量可单独实现接口方法。示例如下: ```java interface SeasonInterface { void printInfo(); } public class OuterClass3 { // 内部枚举类实现接口 enum Season implements SeasonInterface { SPRING("春天", "春暖花开") { @Override public void printInfo() { System.out.println("现在是" + this.getSeasonName() + "," + this.getSeasonDesc()); } }, SUMMER("夏天", "夏日炎炎") { @Override public void printInfo() { System.out.println("现在是" + this.getSeasonName() + "," + this.getSeasonDesc()); } }, AUTUMN("秋天", "秋高气爽") { @Override public void printInfo() { System.out.println("现在是" + this.getSeasonName() + "," + this.getSeasonDesc()); } }, WINTER("冬天", "冰天雪地") { @Override public void printInfo() { System.out.println("现在是" + this.getSeasonName() + "," + this.getSeasonDesc()); } }; private final String seasonName; private final String seasonDesc; Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } } public static void main(String[] args) { Season autumn = Season.AUTUMN; autumn.printInfo(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值