Java中的枚举类型

public enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};

枚举类型的定义:

       枚举类型在很大程度上解决了简化了代码,避免了繁琐的定义,使程序代码更加的整洁。枚举类型相当于一个类,需要新建一个专门的Enum类的java文件,在这个文件里面定义相关的枚举变量,定义的时候要注意了,一般枚举类型定义之后就不会更改变量的值,也就是定义成枚举常量。,更重要的是枚举常量在类型安全性和便捷性都很有保证,如果出现类型问题编译器也会提示我们改进,但务必记住枚举表示的类型其取值是必须有限的,也就是说每个值都是可以枚举出来的,比如上述描述的一周共有七天。枚举常量一般都写成大写的形式。

枚举类型的实现:

        现在有必要来了解一下枚举类型的基本实现原理。实际上在使用关键字enum创建枚举类型并编译后,编译器会为我们生成一个相关的类,这个类继承了Java API中的java.lang.Enum类,也就是说通过关键字enum创建枚举类型在编译后事实上也是一个类类型而且该类继承自java.lang.Enum类。

枚举的常见方法:

        这里主要说明一下ordinal()方法,该方法获取的是枚举变量在枚举类中声明的顺序,下标从0开始,如日期中的MONDAY在第一个位置,那么MONDAY的ordinal值就是0,如果MONDAY的声明位置发生变化,那么ordinal方法获取到的值也随之变化,注意在大多数情况下我们都不应该首先使用该方法,毕竟它总是变幻莫测的。compareTo(E o)方法则是比较枚举的大小,注意其内部实现是根据每个枚举的ordinal值大小进行比较的。name()方法与toString()几乎是等同的,都是输出变量的字符串形式。至于valueOf(Class<T> enumType, String name)方法则是根据枚举类的Class对象和枚举名称获取枚举常量,注意该方法是静态的

在比较两个枚举类型的值的时候,永远不要调用equal()方法,而直接使用“==”就可以了。

        如果需要的话,可以在枚举类型中添加一些构造器、方法和域,当然构造器只是在构造枚举常量的时候被调用。

        所有的枚举类型都是Enum的子类。它们继承了这个类的许多方法。其中最有用的一个是toString()方法,这个方法能够返回枚举常量名。另外toString()的逆方法是静态方法valueof。

         Size s = Enum.valueof(Size.class,”SMALL”);将s设置成Size.SMALL。

        每一个枚举类型都有一个静态的valueof方法,它将返回一个包含全部枚举值的数组,例如:

        Size [] value = Size.valueof();返回Size 中的全部变量。

        Ordinal方法返回enum声明中枚举类型常量的位置,位置从0开始计数。

public class EnumText {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("选择一个号码:(SMALL(\"S\"),MEDIUM(\"M\"),LARGE(\"L\"),EXTRA_LARGE(\"XL\") )" );
		String input = in.next().toUpperCase();
		Size size = Enum.valueOf(Size.class, input);
		System.out.println("Size" + size);
		System.out.println("size = " + size.getSize() );
		if(size == Size.EXTRA_LARGE) {
			System.out.println("Good job--you paid attention to the --.");
		}
	}
}
public enum Size {
	SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");
	private String size;
	private Size(String size) {
		this.size = size;
	}
	 public String getSize() {return this.size; }
}
结果:
选择一个号码:(SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL") )
small
SizeSMALL
size = S

 

      

相关Java中枚举类型的进阶链接:https://blog.csdn.net/javazejian/article/details/71333103

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值