黑马程序员技术交流社区
标题:
枚举问题?
[打印本页]
作者:
↙五线谱╲
时间:
2013-11-1 10:47
标题:
枚举问题?
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-11-1 12:30
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
public class Test{
enum TestEnum {
RED(),GREED;
TestEnum(){};
}
public static void main(String[] args){
TestEnum red=TestEnum.RED;
try {
Constructor [] eConstructor=red.getClass().getDeclaredConstructors();
int mod=eConstructor[0].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 (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
复制代码
使用这个方法:
getDeclaredConstructors,因为这是获得所有声明的,包含私有和非私有,但是
getConstructors值获得公有的。
希望对你有帮助!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2