java部分---枚举

JDK1.5之后可以借助enum关键字定义枚举类型,语法结构如下:

[public] enum 枚举名称 [implements 接口列表] {

	枚举对象1[,枚举对象2] [,…];

	[成员变量1;]
	[成员变量2;]
	[…]
	
	[(静态或非静态)代码块]

	[构造方法1]
	[构造方法2]
	[…]

	[普通方法1]
	[普通方法2]
	[…]

	[抽象方法1]
	[抽象方法2]
	[…]
    }

其中我们可以看到,枚举对象,放在有效代码的第一行,在这里,不允许其他代码块或方法或者属性放在枚举对象的前面,同时,定义枚举有以下几种形式

public enum Color {
	RED, GREEN, BLUE;// 定义三个枚举对象
}
public enum Color {

	RED(1, "红色"), GREEN(2, "绿色"), BLUE(3, "蓝色");

//属性为私有属性,为了确保数据的安全
	private int value;
	private String label;

//构造方法为私有类型,public会出错
	private Color(int value, String label) {
		this.value = value;
		this.label = label;
	}

//通过公共的get和set方法来修改和获取枚举
	public int getValue() {
		return value;
	}

	public String getLabel() {
		return label;
	}
}
enum Color {

	RED {
		public String getLabel() {
			return "红颜色";
		}
	},
	GREEN {
		public String getLabel() {
			return "绿颜色";
		}
	};

//可以直接在枚举中定义抽象方法,此时每个枚举对象需要实现该抽象方法
	public abstract String getLabel();
}

public class Test {
	public static void main(String[] args) {
//for each加强循环
		for (Color color : Color.values()) {
			String label = color.getLabel();
			System.out.println(label);
		}
	}
}

具体解释看代码上方的说明,同时,获取枚举也有下列几种方式

package com.test.csdn;

enum Color {
	GREEN,BLUE,YELLOW;
}

public class Test {
	
	public static void main(String[] args) {
//直接获取单个
//		Color color = Color.BLUE;
//		System.out.println(color);
		
//获取多个枚举对象
		Color []colors = Color.values();
		for (Color color : colors) {
			System.out.println(color);
		}
	}
}

switch在枚举中的运用

package com.test.csdn;

enum Color {
	GREEN,BLUE,YELLOW;
	
	public static void print(Color color) {
		switch(color) {
			case GREEN:
				System.out.println("绿色");
				break;
			case BLUE:
				System.out.println("蓝色");
				break;
			case YELLOW:
				System.out.println("黄色");
				break;
		}
	}
}

public class Test {
	
	public static void main(String[] args) {
		for(Color color : Color.values()) {
			Color.print(color);
		}
	}
}

关于enum关键字与Enum类:Enum类是一个抽象类,该类是Java 语言枚举类型的父类,即enum关键字自定义的枚举类型相当于定义一个继承java.lang.Enum抽象类的子类。

package com.test.csdn;

enum Color {
	GREEN,BLUE,YELLOW;

}

public class Test {
	public static void main(String[] args) {
		for (Color color : Color.values()) {
			int ordinal = color.ordinal();
			String name = color.name();
			System.out.println(ordinal + " ——> " + name);
		}
	}
}

枚举我知道的东西暂时只有这么多,等以后知道的更多了再来补充

猜你喜欢

转载自blog.csdn.net/lanqili/article/details/81260565