序言:关键字Enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。<br />1**.enum的values()方法:**<br />** ** 调用枚举的values()方法可以遍历注解中的实例。values方法返回一个枚举实例的数组,而且该数组中的元素次序保持在你的枚举类中声明的顺序。
package com.package19;enum Shrubbery{GROUND,CRAWLING,HANGING;}public class EnumClass {public static void main(String[] args) {for (Shrubbery value : Shrubbery.values()) {System.out.println(value+" "+value.ordinal());System.out.println(value==Shrubbery.CRAWLING);System.out.println(value.equals(Shrubbery.CRAWLING));System.out.println(value.name());System.out.println(value.getDeclaringClass());System.out.println("============================");}}}
ordinal()方法返回一个int值,该值时每个enum是在声明的顺序。name()方法返回enum实例声明时的名字,通过调用getDeclaringClass(),我也就可以知道该实例所属的enum类。
注意:
1.我们创建的一个enum类都会继承java.long.Enum。
Enum部分源代码
public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable {public final boolean equals(Object other) {return this==other;}public final int hashCode() {return super.hashCode();}public final int compareTo(E o) {Enum<?> other = (Enum<?>)o;Enum<E> self = this;if (self.getClass() != other.getClass() && // optimizationself.getDeclaringClass() != other.getDeclaringClass())throw new ClassCastException();return self.ordinal - other.ordinal;}}
并且这个类还实现了Comparable接口和Serializeable接口。所以没一个enum类都具有CompareTo()方法和equals()、hashCode()方法。<br />**2.enum类之间不可以继承**
enum Shrubbery{GROUND,CRAWLING,HANGING;}public enum Spicinerss extends Shrubbery {//不能继承NOT,MILD,MEDIUM,HOT,FLAMING;}
2.静态导入用于enum
静态导入:在导入包的路上加入static 关键字。所以在使用该类的static成员时可不带类名
import static com.package19.Spicinerss.*;//静态导入public class Burrito {Spicinerss spicinerss;Burrito(Spicinerss spicinerss) {this.spicinerss = spicinerss;}@Overridepublic String toString() {return "Burrito is" + spicinerss;}public static void main(String[] args) {System.out.println(new Burrito(MEDIUM));}}
