枚举的4种使用方式

本文详细介绍了Java中枚举的四种使用方式,包括利用枚举实现单例模式,以及枚举带不同数量属性的实例,如不带属性、带一个属性、带两个属性的枚举,还讲解了如何通过枚举属性进行匹配操作。

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

1.枚举实现单例模式

public class demo {
    public static void main(String[] args) {
        //1.枚举不带属性
        System.out.println(SignDocCType.FNA);               //FNA

        //2.枚举带一个属性
        System.out.println(SignDocType.FNA);                //FNA
        System.out.println(SignDocType.FNA.getValue());     //0

        //3.枚举带2个属性
        System.out.println(SignDocdType.AUDIO.getName());   //音频
        System.out.println(SignDocdType.AUDIO.getValue());  //2

        //4.通过枚举的属性匹配枚举
        System.out.println(FNAChoice2Value.AUDIO.getByValue(1));              //VIDEO
        System.out.println(FNAChoice2Value.IMAGE.getByValueAndName(4, "图像"));//IMAGE
    }
}

 

2.JAVA实现枚举

2.1 枚举不带属性

public enum SignDocCType {

    FNA, ECLARATION_FOR_INTERMEDIARIES, IFS_MP

}

 

2.2 枚举带一个属性(常用)

public enum SignDocType {

    FNA("0"), IFS_MP("3");

    //属性
    public String docType;

    //有参构造器
    SignDocType(String docType){
        this.docType = docType;
    }

    //get器
    public String getValue() {
        return docType;
    }

}

2.3 枚举带2个属性

public enum SignDocdType {
    VIDEO(1, "视频"), AUDIO(2, "音频"), TEXT(3, "文本"), IMAGE(4, "图像");

    //属性
    int value;
    String name;

    //有参构造器
    SignDocdType(int value, String name) {
        this.value = value;
        this.name = name;
    }

    //get器
    public int getValue() {
        return value;
    }

    public String getName() {
        return name;
    }
}

2.4 通过枚举的属性匹配枚举

@Getter
public enum FNAChoice2Value {
    VIDEO(1, "视频"), AUDIO(2, "音频"), TEXT(3, "文本"), IMAGE(4, "图像");

    int value;
    String name;

    FNAChoice2Value(int value, String name) {
        this.value = value;
        this.name = name;
    }

    //通过value找到对应的枚举
    public FNAChoice2Value getByValue(int value) {
        for(FNAChoice2Value typeEnum : FNAChoice2Value.values()) {
            if(typeEnum.value == value) {
                return typeEnum;
            }
        }
        //throw new IllegalArgumentException("No element matches " + value);
        return null;
    }

    //通过value和name找到枚举
    public FNAChoice2Value getByValueAndName(int value,String name) {
        for(FNAChoice2Value typeEnum : FNAChoice2Value.values()) {
            if(typeEnum.value == value && typeEnum.getName().equals(name)) {
                return typeEnum;
            }
        }
        return null;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值