Java 枚举

枚举

关键字:enum,与class,interface是一个级别,本质上就是一个类,只是能控制这个类的实例数量(故而属性无参有参构造都用private,这样避免外部去实例化对象造成实例数量不固定)

创建枚举实例-调用无参构造

//红绿蓝枚举,只有三个实例,默认调用无参构造,三个实例也就调用三次无参构造
public enum ColorEnum {
    RED,GREEN,BLUE
}

创建枚举实例-调用有参构造

       1. 枚举可以有实例化属性,无参/有参构造方法,抽象方法。(注意看代码中的注释)

package com.hudong.enumtest;
import java.lang.Enum;

public enum ColorEnum {
    //RED,GREEN,BLUE调用有参构造,YELLOW调用无参构造
    //有属性方法时,记得在枚举实例序列的最后一个添加分号,代表枚举实例结束
    RED("00","红色"),GREEN("01","绿色"),BLUE("02","蓝色"),YELLOW;
    private String code;
    private String name;
    private ColorEnum(){
        System.out.println("默认调用无参构造");
    }
    private ColorEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }
    public static String getName(String code) {
        //枚举在编译的时候才会插入一些方法,比如values()方法
        for(ColorEnum color:ColorEnum.values()) {
            if(color.getCode().equals(code)) {
                return color.name;
            }
        }
        return null;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    
    
}

         2.有抽象方法的有参调用枚举

package com.hudong.enumtest;
import java.lang.Enum;

public enum ColorEnum2 {
	//RED,GREEN,BLUE调用有参构造,YELLOW调用无参构造
	//有属性方法时,记得在枚举实例序列的最后一个添加分号,代表枚举实例结束
	RED("00","红色"){
		@Override
		public  void getInfo() {
			
		}
	},GREEN("01","绿色"){
		@Override
		public  void getInfo() {
			
		}
	},BLUE("02","蓝色"){
		@Override
		public  void getInfo() {
			
		}
	},YELLOW{
		@Override
		public  void getInfo() {
			
		}
	};
	private String code;
	private String name;
	private ColorEnum2(){
		System.out.println("默认调用无参构造");
	}
	private ColorEnum2(String code, String name) {
		this.code = code;
		this.name = name;
	}
	//抽象方法
	public abstract void getInfo();
	
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
	
}

  

原文地址:https://www.cnblogs.com/xiaohu666/p/15456321.html