代码
public
static
void
fn(String classname)
throws
Exception {
Class cn = Class.forName(classname);
Field[] field = cn.getDeclaredFields();
System.out.println(field.length);
for (Field fields : field) {
if (fields.getModifiers() == 2 || fields.getModifiers() == 10 ) {
fields.setAccessible( true );
}
System.out.println(fields + " --> " + fields.get(cn.newInstance()));
}
}
Class cn = Class.forName(classname);
Field[] field = cn.getDeclaredFields();
System.out.println(field.length);
for (Field fields : field) {
if (fields.getModifiers() == 2 || fields.getModifiers() == 10 ) {
fields.setAccessible( true );
}
System.out.println(fields + " --> " + fields.get(cn.newInstance()));
}
}
刚刚整反射的时候遇到了下面的一个bug:
Exception in thread "main" java.lang.InstantiationException: com.reflect.FieldReflect
查看了一下“Instantiation”的意思:实例化。
出现这个错误的原因应该就是不能实例化com.reflect.FieldReflect 。出现这种异常的原因通常情况下是由于要实例化的对象是一个接口或者是抽象类等无法被实例化的类,但是我的com.reflect.FieldReflect
并不符合上面的条件。检查了一下,发现原来是com.reflect.FieldReflect
没有无参数的构造方法。加一个无参数的构造方法得以解决了。