`
wangfeiaini
  • 浏览: 53766 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java反射机制调用类的方法

阅读更多

工作需要用java反射,小小研究一下,挺不错,废话少说,直接上代码。

1.根据类的完整路径获取类:

 

public static Class<?> getClass(String className){
		Class<?> c = null;
		try {
			c = Class.forName(className);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return c;
	}

 2.获取执行类的方法

 

/**
	 * 
	 * @param cls
	 * @param methodName  方法名
	 * @param params 参数列表
	 * @return
	 */
	public static String getMethod(Class<?> cls,String methodName,Object...params){
		Class<?> []o = null;
		if(params != null){
			int len = params.length;
			o = new Class[len];
			for(int i=0;i<len;i++){
				o[i] = params[i].getClass();
			}
			try {
				Method method = cls.getDeclaredMethod(methodName, o);
				method.invoke(cls.newInstance(), params);
			} catch (SecurityException e) {
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				e.printStackTrace();
			} catch (InstantiationException e) {
				e.printStackTrace();
			}
		}
		return "";
	}
3.测试
public static void main(String[] args) {
		Class<?> c = getClass("refelect.MyNewClass");
		System.out.println(c);
		try {
			getMethod(c, "show", "msg");
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		}
	}
  • 大小: 8.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics