黑马程序员技术交流社区

标题: 枚举里是否可创建对象??? [打印本页]

作者: 柏涛    时间: 2014-2-19 19:21
标题: 枚举里是否可创建对象???
请看程序 为什么会报错?
package junereflect624;
import java.lang.reflect.Constructor;
enum Color{
RED,BLUE,GREEN;
private Color(){
}
}
public class EnumDemo8 {
public static void main(String[] args) throws Exception {
Class<Color> c = Color.class;
Constructor<Color> con = c.getDeclaredConstructor();Color co = (Color) con.newInstance();
System.out.println(coSystem.out.println(c.isEnum());
}
}

作者: e.c    时间: 2014-2-19 22:42
目前发现通过反射实例枚举对象会报错“Cannot reflectively create enum objects”不知道有没有方法
好象只能找到一个构造方法Color(java.lang.String,int),且用这个方法实例对象的时候会报上面的错误
                Constructor[] constructors = c.getDeclaredConstructors();
                for(Constructor constructor:constructors){
                        System.out.println(constructor);   //会打印出Color(java.lang.String,int)
                }
                Constructor<Color> con = c.getDeclaredConstructor(String.class, int.class);
                con.setAccessible(true);
                Color co = (Color) con.newInstance("RED",0); //用这个构造方法实例对象也行不通,报错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2