java--基础--19--枚举

java–基础–19–枚举


1、介绍

  • 枚举类也是一种特殊形式的Java类。
  • 枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
  • 与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的。
  • 枚举类也可以实现接口、或继承抽象类。
  • 若枚举类只有一个枚举值,则可以当作单态设计模式使用。
  • 每一个枚举的值,都相当于一个实例化对象

2、案例


//枚举类 : People.woman 等价于new People().woman
public enum People {
	//woman, man;等价于如下
	//public static final People2 woman=new People2();
	//public static final People2 man=new People2();
	woman, man;
}
public enum People2 {
	//woman("女"), man("男");等价于如下
	//public static final People2 woman=new People2("女");
	//public static final People2 man=new People2("男");
	woman("女"), man("男");

	private String name;

	private People2(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

}
public enum People3 {
	
	/*枚举类也可以实现接口、或继承抽象类
	 * 	woman("女") {
		@Override
		public void show() {
			System.out.println("女");
		}
	},
	等价于
	public static final People3 woman = new People3("女") {
		@Override
		public void show() {
			System.out.println("女");
		}

	};
	 */
	woman("女") {
		@Override
		public void show() {
			System.out.println("女");
		}
	},
	man("男") {
		@Override
		public void show() {
			System.out.println("男");
		}
	};

	private String name;

	private People3(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public abstract void show();
}

测试

public class Test {
	public static void main(String[] args) {
		System.out.println("------People-------");
		People p = People.woman;
		System.out.println(p); // woman
		
		// public String toString()返回枚举常量的名称,它包含在声明中。
		System.out.println("------People2-------");
		People2 p2 = People2.woman;
		System.out.println(p2);
		System.out.println(p2.getName());
		
		System.out.println("------People3-------");
		People3 p3 = People3.woman;
		System.out.println(p3);
		System.out.println(p3.getName());
		p3.show();
		
		System.out.println("-----People3-switch--------");
		People3 p32 = People3.woman;
		System.out.println(p32);
		switch (p32) {
		case woman:
			System.out.println("woman");
			break;
		case man:
			System.out.println("man");
			break;
		}
		
		People2 p21 = People2.woman;
		People2 p22 = People2.man;
		
		System.out.println("------ordinal 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零--------");
		// int ordinal()
		System.out.println(p21.ordinal());
		System.out.println(p22.ordinal());
		
		System.out.println("------compareTo(E o)比较此枚举与指定对象的顺序。---");
		System.out.println(p21.compareTo(p22));
		
		System.out.println("-------name 返回此枚举常量的名称--------");
		// String name()
		System.out.println(p21.name());
		System.out.println(p22.name());
		

		
		System.out.println("--------toString------");
		// String toString()
		System.out.println(p21.toString());
		System.out.println(p22.toString());
		
		
		System.out.println("-------valueOf回带指定名称的指定枚举类型的枚举常量-------");
		// <T> T valueOf(Class<T> type,String name)
		People2 p223 = Enum.valueOf(People2.class, "woman");
		System.out.println(p223.getName());
		
		System.out.println("------values()----------");
		// values()
		//遍历枚举类的所有枚举值
		People2[] pirs = People2.values();
		for (People2 p224 : pirs) {
			System.out.println(p224+"--------"+p224.getName());
		}
	}
	
}

输出:
------People-------
woman
------People2-------
woman
女
------People3-------
woman
女
女
-----People3-switch--------
woman
woman
------ordinal 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零--------
0
1
------compareTo(E o)比较此枚举与指定对象的顺序。---
-1
-------name 返回此枚举常量的名称--------
woman
man
--------toString------
woman
man
-------valueOf回带指定名称的指定枚举类型的枚举常量-------
女
------values()----------
woman--------女
man--------男

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值