enum类型的使用

来源:互联网 发布:敏捷软件开发 pdf 编辑:程序博客网 时间:2024/06/06 02:58

需要继续研究。。。。。。。

    创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

public enum EnumTest {
    MON, TUE, WED, THU, FRI, SAT, SUN;
}

这段代码实际上调用了7次 Enum(String name, int ordinal):

new Enum<EnumTest>("MON",0);
new Enum<EnumTest>("TUE",1);
new Enum<EnumTest>("WED",2);
int compareTo(E o) 

          比较此枚举与指定对象的顺序。

Class<E> getDeclaringClass() 
          返回与此枚举常量的枚举类型相对应的 Class 对象。

String name() 
          返回此枚举常量的名称,在其枚举声明中对其进行声明。

int ordinal() 
          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

String toString()

           返回枚举常量的名称,它包含在声明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 
          返回带指定名称的指定枚举类型的枚举常量。

public enum EnumTest {    MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6) {        @Override        public boolean isRest() {            return true;        }    },    SUN(0) {        @Override        public boolean isRest() {            return true;        }    };     private int value;     private EnumTest(int value) {        this.value = value;    }     public int getValue() {        return value;    }     public boolean isRest() {        return false;    }}public class Test {    public static void main(String[] args) {        System.out.println("EnumTest.FRI 的 value = " + EnumTest.FRI.getValue());    }}
输出结果:
EnumTest.FRI 的 value = 5

public enum Gender {MAN{public String getTitle(){return "男";}},WOMAN{public String getTitle(){return "女";}},BOTH{public String getTitle(){return "男女均可";}};public abstract String getTitle();public String getValue(){return this.name();}}

public class GenderTest {public static void main(String[] args) throws Exception{System.out.println(BeanUtils.getProperty(Gender.MAN, "title"));Object bean = Gender.MAN;BeanInfo beanInfo = null;try {beanInfo = Introspector.getBeanInfo(bean.getClass());} catch (Exception e1) {e1.printStackTrace();}PropertyDescriptor[] properties = beanInfo.getPropertyDescriptors();for(PropertyDescriptor property:properties){if(property.getName().equals("title")) // 可以换为value后输出值为MAN{Method method = property.getReadMethod();//值得研究System.out.println(method.isAccessible()); // falsemethod.setAccessible(true);Object retVal;try {retVal = method.invoke(bean, null);    System.out.println(retVal);} catch (Exception e) {e.printStackTrace();}}}}}

输出结果如下:


false
MAN








0 0
原创粉丝点击