Java之Enum

1.简单枚举

Color.java

package zh.myenum.demo;

public enum Color {
	
	// 第一行只能是枚举项,每一个枚举项都是一个静态实例对象
	RED,GREEN,BLUE,ORANG;
	
	// 枚举的构造方法只能是私有
	/*public Color(){
		// 报错:Illegal modifier for the enum constructor; only private is permitted.
	}*/
	
}

ColorDemo.java

package zh.myenum.demo;

public class ColorDemo {

	public static void main(String[] args) {
		
		Color green = Color.GREEN;
		
		System.out.println(green);//GREEN
		// 枚举项的名称
		System.out.println(green.name());//GREEN
		// 枚举项的索引
		System.out.println(green.ordinal());// 1

	}

}

2.复杂枚举

Color.java

package zh.myenum.demo;

public enum Color {
	
	// 第一行只能是枚举项,每一个枚举项都是一个静态实例对象
	RED("red"){

		@Override
		public void fun() {
			System.out.println("i am red");
		}
		
	},GREEN("green"){

		@Override
		public void fun() {
			System.out.println("i am green");
		}
		
	},BLUE("blue"){

		@Override
		public void fun() {
			System.out.println("i am blue");
		}
		
	},ORANGE("orange"){

		@Override
		public void fun() {
			System.out.println("i am orange");
		}
		
	};
	
	// 私有属性
	private String name;
	
	// 如果只有 私有带参构造方法,那么第一行的枚举项后要传参
	private Color(String name){
		this.name = name;
	}
	
	public String getName() {
		return name;
	}
	
	// 如果内部有 抽象方法,那么第一行的枚举项要重写抽象方法
	public abstract void fun();
	
}

ColorDemo.java

package zh.myenum.demo;

public class ColorDemo {

	public static void main(String[] args) {
		
		Color green = Color.GREEN;
		
		System.out.println(green);//GREEN
		// 枚举项的名称
		System.out.println(green.name());//GREEN
		// 获得属性
		System.out.println(green.getName());// green
		// 枚举项的索引
		System.out.println(green.ordinal());// 1
		// 调用fun()
		green.fun();// i am green
		
		// 根据名称获得枚举项
		Color orange = Color.valueOf("ORANGE");
		System.out.println(orange.ordinal());// 3
		System.out.println(orange.getName());// orange
		orange.fun();// i am orange

		// 获得枚举项数组
		Color[] colors = Color.values();
		for(Color color : colors){
			System.out.println(color);
		}
		//		RED
		//		GREEN
		//		BLUE
		//		ORANGE
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80143114