JAVA 枚举运用一 values方法


import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Set;
import  java.util.*;
public class EnumJavaClass {
    public enum EnumClass{
        One("参数变量枚举一"),
        Two("参数变量枚举二"),
        Three("参数变量枚举三");
        private String Description;

        public String getDescription() {
            return Description;
        }
        private  EnumClass(String m_Description){
            this.Description=m_Description;
        }
    }
    public static Set<String> analyze(Class<?> EnumClass)
    {
        System.out.println("-----------Analyzing "+EnumClass+"--------");
        System.out.print("Interfaces:");
        for(Type t:EnumClass.getGenericInterfaces()){
            System.out.print(t);
        }
        System.out.println("Base:"+EnumClass.getGenericSuperclass());
        System.out.println("Methods:");
        Set<String> methods=new TreeSet<String>();
        for(Method m:EnumClass.getMethods()){
            methods.add(m.getName());
        }
        System.out.println(methods);
        return methods;
    }
    public  static  void main(String[] args){
         for(EnumClass enumClass : EnumClass.values()){
             System.out.println(enumClass.getDescription());
         }
         Set<String> exploreMethods=analyze(EnumClass.class);
         Set<String> EnumMethods=analyze(Enum.class);
      
         //将自定义的枚举类型转基类枚举
//根据 values 返回枚举数组
EnumClass[] val =EnumClass.values();
for(Enum en : EnumClass.One.getClass().getEnumConstants()){
System.out.println(en);
}
     } 
}

打印结果:

参数变量枚举一
参数变量枚举二
参数变量枚举三
-----------Analyzing class EnumJavaClass$EnumClass--------
Interfaces:Base:java.lang.Enum<EnumJavaClass$EnumClass>
Methods:
[compareTo, equals, getClass, getDeclaringClass, getDescription, hashCode, name, notify, notifyAll, ordinal, toString, valueOf, values, wait]
-----------Analyzing class java.lang.Enum--------
Interfaces:java.lang.Comparable<E>interface java.io.SerializableBase:class java.lang.Object
Methods:
[compareTo, equals, getClass, getDeclaringClass, hashCode, name, notify, notifyAll, ordinal, toString, valueOf, wait]

One
Two
Three

通过反射可以看出:自己定义的枚举和枚举基类相比,多了一个values方法,这个方法不是枚举基类的,是编译器插入的静态方法。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM