Java反射内部类
Java利用反射机制实例化对象的时候,需要通过类名来获得Class,例如"android.view.ViewGroup",但是,内部类的类名是比较奇怪的,例如ViewGroup的内部类LayoutParams,在代码中我们可以这样声名ViewGroup.LayoutParams lp = ....,但是实际上这并不是其真正的类名。Java在编译代码时为了区分内部类会将内部类名改为
"ViewGroup$LayoutParams"。所以反射的时候,输入内部类类名要注意这一点。
附上反射实例化类的简单方法。没有做排错处理。
/**
*
* @param className: 完整类名
* @param argTypes: 构造函数的参数类型
* @param args: 构造函数值
* @return 实例化对象
*/
static Object reflectInstance(String className, Class[] argTypes,
Object[] args) {
try {
Class viewClass = Class.forName(className);
Constructor con = viewClass.getConstructor(argTypes);
return con.newInstance(args);
} catch (Exception e1) {
e1.printStackTrace();
}
return null;
}

浙公网安备 33010602011771号