A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赖波 中级黑马   /  2013-10-15 17:25  /  1434 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赖波 于 2013-10-18 20:59 编辑

先看代码
  1. import java.lang.reflect.Constructor;
  2. import java.lang.reflect.Modifier;

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

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

2 个回复

倒序浏览
API中是这么说的:
Enum
protected Enum(String name,
               int ordinal)
单独的构造方法。程序员无法调用此构造方法。该构造方法用于由响应枚举类型声明的编译器发出的代码。
回复 使用道具 举报

楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马