枚举类型介绍


定义Color枚举类:

package testEnum;
 
public enum Color {
    
    RED(0,"红色"),
    BLUE(1,"这是蓝色"),
    YELLOW(2,"这是黄色"),
    GREEN(3,"这是绿色");
    
    //可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。
    //唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。
    private int code;
    private String desc;
    
    public int getCode() {
        return code;
    }
 
    public void setCode(int code) {
        this.code = code;
    }
 
    public String getDesc() {
        return desc;
    }
 
    public void setDesc(String desc) {
        this.desc = desc;
    }
 
    
    
     Color(int code,String desc){ //加上public void 上面定义枚举会报错 The constructor Color(int, String) is undefined
        this.code=code;
        this.desc=desc;
        
    }
    
    
    /**
     * 自己定义一个静态方法,通过code返回枚举常量对象
     * @param code
     * @return
     */
    public static Color getValue(int code){
        
        for (Color color : values()) {
            if(color.getCode()== code){
                return color;
            }
        }
        return null;
    }
 
    
}
 

定义测试类:

package testEnum;
 
public class EnumTest {
 
    public static void main(String[] args) {
 
        String str = Color.getValue(0).getDesc();
        System.out.println("测试枚举的values=="+str);
        
        /*测试枚举的valueof,里面的值可以是自己定义的枚举常量的名称
               其中valueOf方法会把一个String类型的名称转变成枚举项,也就是在枚举项中查找字面值和该参数相等的枚举项。*/
        Color color = Color.valueOf("GREEN");
        System.out.println("valueOf==code==="+color.getCode());
        System.out.println("valueOf==desc==="+color.getDesc());
        
        //测试枚举的toString()方法
        Color s2 = Color.getValue(0);
        System.out.println("s2==="+s2);
        System.out.println("s2==="+s2.toString());
    }
 
}
 

测试结果:

 

再定义一个Color1:

package testEnum;

public enum Color1 {
    
    RED(0,"红色"),
    BLUE(1,"这是蓝色"),
    YELLOW(2,"这是黄色"),
    GREEN(3,"这是绿色","lvse");
    
    //可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。
    //唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。
    private int code;
    private String desc;
    private String desc1;
    
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getDesc1() {
        return desc1;
    }

    public void setDesc1(String desc1) {
        this.desc1 = desc1;
    }

    
     Color1(int code,String desc){ //加上public void 上面定义枚举会报错 The constructor Color(int, String) is undefined
        this.code=code;
        this.desc=desc;
        
    }
    
     Color1(int code,String desc,String desc1){
            this.code=code;
            this.desc=desc;
            this.desc1=desc1;
        }
    
    /**
     * 自己定义一个静态方法,通过code返回枚举常量对象
     * @param code
     * @return
     */
    public static Color1 getValue(int code){
        
        for (Color1 color : values()) {
            if(color.getCode()== code){
                return color;
            }
        }
        return null;
    }

    
}
 

如上特殊颜色是新增的代码。

测试结果:

注意枚举如果不写下面框起来的lvse,打印出来结果就是null。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值