0
点赞
收藏
分享

微信扫一扫

Java之枚举类(重要)

Java中枚举类型具有以下特性:

  1. Java枚举类型是一种类,是引用类型,具有了面向对象特性,可以添加方法和成员变量等。
  2. Java枚举类型父类是java.lang.Enum,不需要显式声明。
  3. Java枚举类型可以实现接口,与类实现接口类似。
  4. Java枚举类型不能被继承,不存在子类。

枚举类声明

语法格式如下:

[public] enum 枚举名{
  枚举常量列表
}

最简单形式的枚举类

例:采用枚举类来表示工作日。

WekDs.java

package java_11_30;

public enum WekDs {
	// 枚举常量列表
	MONDAY, TUESDAY, WEDENSDAY, THURSDAY, FRIDAY
}

WeekDays.java

package java_11_30;

public class WeekDays {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WekDs d = WekDs.FRIDAY;
		System.out.println(d);
		switch (d) {
		case MONDAY:
			System.out.println("星期一");
			break;
		case TUESDAY:
			System.out.println("星期二");
			break;
		case WEDENSDAY:
			System.out.println("星期三");
			break;
		case THURSDAY:
			System.out.println("星期四");
			break;
		case FRIDAY:
			System.out.println("星期五");
			break;
		default:
			System.out.println("星期五");
			break;
		}
	}
}

控制台输出:

FRIDAY
星期五

赋值表达式是“枚举类型名.枚举常量”的形式。

枚举类中成员变量和成员方法

枚举类的成员方法可以是实例方法、静态方法,但不能是抽象方法。

示例代码如下:

WkDays.java

package java_11_30;

public enum WkDays {
	// 枚举常量列表
	MONDAY, TUESDAY, WEDENSDAY, THURSDAY, FRIDAY;  // ①

	// 实例变量
	private String dayName;
	private int index;
	// 静态变量
	private static int staticVar = 100;

	// 覆盖父类中的toString()方法
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();
		sb.append(dayName);
		sb.append("-");
		sb.append(index);
		return sb.toString();
	}

	// 实例方法
	public String getInfo() {
		// TODO Auto-generated method stub
		return super.toString();
	}

	// 静态方法
	public static int getStaticVar() {
		return staticVar;
	}
}

添加其它成员的枚举类需要注意,“枚举常量列表”语句必须是枚举类中的第一行代码。而且“枚举常量列表”语句后面要加分号(;)表示语句的结束,见代码第①行。

WDs.java

package java_11_30;

public class WDs {

	@SuppressWarnings("static-access")
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WkDays days = WkDays.FRIDAY;
		// 打印day默认调用枚举toString()方法
		System.out.println(days);
		// 调用枚举实例方法
		System.out.println(days.getInfo());
		// 调用枚举静态方法
		System.out.println(days.getStaticVar());
	}
}

上述代码比较简单,这里不再赘述。

枚举类构造方法

package java_11_30;

public enum W {
	MONDAY("星期一", 0), TUESDAY("星期二", 0), WENDENSDAY("星期三", 0), THURSDAY("星期四", 0), FRIDAY("星期五", 0),;

	private String name;
	private int index;

	private static int staticVar = 100;

	private W(String name, int index) {   //构造方法
		// TODO Auto-generated constructor stub
		this.name = name;
		this.index = index;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();
		sb.append(name);
		sb.append("-");
		sb.append(index);
		return sb.toString();
	}

	// 实例方法
	private String getInfo() {
		// TODO Auto-generated method stub
		return super.toString();
	}

	// 静态方法
	public static int getStaticVar() {
		return staticVar;
	}
}

枚举常用方法

所有的枚举类都继承java.lang.Enum类。

package java_11_30;

public class HelloWorld {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDs[] allValues = WeekDs.values();
		// 遍历枚举常量数值
		for (WeekDs value : allValues) {
			System.out.printf("%d - %s\n", value.ordinal(), value);
		}
		// 创建WeekDs对象
		WeekDs day1 = WeekDs.FRIDAY;
		WeekDs day2 = WeekDs.valueOf("FRIDAY");
		System.out.println(day1 == WeekDs.FRIDAY);
		System.out.println(day1.equals(WeekDs.FRIDAY));
		System.out.println(day1 == day2);
	}
}

通过本章的学习,我们可以了解到Java中枚举的作用、特点和常用方法。重点是声明和使用枚举类。

Java之枚举类(重要)_枚举类

举报

相关推荐

0 条评论