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;
    }

  

posted @ 2012-02-28 15:57  墨界夜  阅读(1648)  评论(0)    收藏  举报