import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
public class Test{
public enum TestEnum {
RED(),GREED;
TestEnum(){};
}
public static void main(String[] args){
TestEnum red=TestEnum.RED;
try {
Constructor eConstructor=red.getClass().getConstructor();
int mod=eConstructor.getModifiers();//获取修饰符相对的int
/*通过以下来判断是public,还是private,还是默认
* */
System.out.println(Modifier.isPrivate(mod));//根据mod判断哪个修饰符
System.out.println(Modifier.isPublic(mod));
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
因为在构在函数前没有加修饰符,不影响枚举,当然我们都知是Private
但我想通过反射来,判断是哪个修饰符
先通过枚举的一个对象red(这是一个明显的调用了写的无参构造方法的实例)
通过red的类的字节码来获取构造函数,但出错了。
我不明白是不是枚举匿名类的关系造成的吗? |