本帖最后由 赖波 于 2013-10-18 20:59 编辑
先看代码- 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的类的字节码来获取构造函数,但出错了。
我不明白是不是枚举匿名类的关系造成的吗? |