黑马程序员技术交流社区
标题:
Enum枚举构造函数修饰符的问题
[打印本页]
作者:
赖波
时间:
2013-10-15 17:25
标题:
Enum枚举构造函数修饰符的问题
本帖最后由 赖波 于 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的类的字节码来获取构造函数,但出错了。
我不明白是不是枚举匿名类的关系造成的吗?
作者:
张文豪
时间:
2013-10-15 23:29
API中是这么说的:
Enum
protected Enum(String name,
int ordinal)
单独的构造方法。程序员无法调用此构造方法。该构造方法用于由响应枚举类型声明的编译器发出的代码。
作者:
李江
时间:
2013-10-18 19:46
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2