Enum的一点点理解

来源:互联网 发布:vb调用大漠插件 编辑:程序博客网 时间:2024/05/17 04:33

 枚举类型的创建

public enum NameOfEnum{       FIELD1,FIELD2,.....}


由于enum自身是一个class所以它也有构造函数

public enum ResourcesType implements IEnum{FOLDER("FOLDER", "目录,文件夹"),FILE("FILE", "文件"),MENU("MENU", "菜单"), URL("URL", "统一资源定位符(URL)"), FUNCTION("FUNCTION", "函数");private String code;private String text; private ResourcesType(String code, String text) {this.code = code;this.text = text;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getText() {return text;}public void setText(String text) {this.text = text;}}

Note:enum的构造函数为private 而且这个构造函数的调用只是在创建内部值时才调用 外部不得调用

也就是说其实enum内的值时enum自身的instance而且为public static final 类型

 

Enum中的方法:(复制于API)

protected  Objectclone()
          Throws CloneNotSupportedException. intcompareTo(E o)
          Compares this enum with the specified object for order. booleanequals(Object other)
          Returns true if the specified object is equal to this enum constant. Class<E>getDeclaringClass()
          Returns the Class object corresponding to this enum constant's enum type. inthashCode()
          Returns a hash code for this enum constant. Stringname()
          Returns the name of this enum constant, exactly as declared in its enum declaration. intordinal()
          Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero). StringtoString()
          Returns the name of this enum constant, as contained in the declaration.static <T extends Enum<T>>
T
valueOf(Class<T> enumType,String name)
          Returns the enum constant of the specified enum type with the specified name.


上面的那些方法都很容易理解 唯一的有点让人费解的方法是values()因为找不到出处 在Api中Enum中没这个方法 但是它又是存在的

而且查资料显示

其实enum,class,interface均是java.lang.annotation.ElementType的type

 

TYPE

public static final ElementType TYPE
Class, interface (including annotation type), or enum declaration

所以enum的values()方法来至此处

原创粉丝点击