相关文章推荐
霸气的西装  ·  php pdf 图像 - CSDN文库·  4 月前    · 
会开车的企鹅  ·  python ...·  6 月前    · 

Java 的 enum 是 singleton class (只能有一个 instance)。Java 通过编译器和 JVM 联手来防止enum 产生超过一个class:不能利用 new、clone()、de-serialization、以及 Reflection API 来产生enum 的 instance。

所以想通过反射来创建枚举型对象则需要其他途径:

举个例子:

如果用Class.newInstance()来创建,运行时肯定会报异常。

但Java也给我们准备了Enum类,可以它直接生成enum的对象。这里主要是用了它提供的方法:Enum.valueOf(Class,value);

示例如下:

TestEnum {

public static void main(String[] args) {
try {
RefColor obj
= new RefColor();
Class clazz
= Class.forName( " Color " );
Field field
= obj.getClass().getDeclaredField( " color " );
field.set(obj, Enum.valueOf(clazz,
" red " ));
System.out.println(obj.color);
}
catch (Exception e) {
e.printStackTrace();
}


}


}
Java 的 enum 是 singleton class (只能有一个 instance)。Java 通过编译器和 JVM 联手来防止enum 产生超过一个class:不能利用 new、clone()、de-serialization、以及 Reflection API 来产生enum 的 instance。 所以想通过反射来创建枚举型对象则需要其他途径:举个例子:public
枚举使用 enum 关键字,(枚举的实例是常量,因此按照命名规范它们都得大写,如果有多个单词用下划线将他们隔开),枚举属于一种类,它有自己的方法,枚举类型可以作为swatch语句的参数(JDK1.5以后支持的),枚举不可以产生实例 对象 (所有自定义的枚举都是继承 Enum (一个抽象类),构造函数默认为私有的); swatch语句的参数只能是byte、short、char、int类型以及他们的包装类和Str...
【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/ java zejian/article/details/71333103 出自【zejian的博客】 关联文章: 深入理解 Java 类型信息(Class 对象 )与 反射 机制 深入理解 Java 枚举类型( enum ) 深入理解 Java 注解类型(@Annotation) JAVA 反射 机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个 对象 ,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用 对象 方法的功能称为 java 语言的 反射 机制。
一、 反射 Java 反射 (reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个 对象 ,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用 对象 方法的功能称为 java 语言的 反射 (reflection)机制。 a、在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用 Java 反射 机制通过 反射 来获取所需的私有成员或是方法 。