枚举类
枚举类是一种特殊的引用变量,它既可以像接口一样定义成顶层引用,又可以像内部类一样定义在类的内部。但是枚举类不能定义在方法里面,因为使用枚举类是需要在创建对象的,对象都在堆中被创建,而方法中的属性在栈中的方法区。
之所以需要枚举类,是因为有时候方法里需要的值是固定范围的。其实实现这种要求很简单,最简单的方式就是使用数组、集合等带有存储性质将一定范围类的固定值放进去,可是这种方法缺陷很大,因为集合数组是放在堆内存中的,而不是所有固定值都有用,这就造成了堆内存的浪费,这时候就需要枚举类了。枚举类本质上是在类中自己实例化好多个一定范围内的实例,更准确的说是该枚举类匿名子类的实例,需要使用哪个实例就创建哪个实例的对象,这就避免了内存浪费。JDK1.5之前还没有枚举类,当时是通过自定义枚举类来实现的。如下:
JDK1.5之后加入了enum枚举类,需要注意的是enum的构造函数,分有参和无参两种,两种构造函数都必须是private修饰的,这是保证了枚举值的不可变性,即一定范围内的值。如下:
enum枚举类常用的方法有:
1.values() 获取所有枚举类的实例对象
2.valueof() 获取指定name的枚举类实例对象
3.ordinal()
4.name()