下面是反射封装的代码,废话不多说直接看代码
package com.rongtai.test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
	public static void main(String[] args) throws Exception {
		test();
	}
	public static void test() throws Exception {
		A impl = new A();
		Class<?> clazz = impl.getClass();
		Method m = clazz.getMethod("print", getPeremeterClass(impl, "print"));
		// 调用你要指定的方法 应该知道 参数的类型和数量
		m.invoke(impl, "Hello", "  world");
	}
	public static Class<?>[] getPeremeterClass(Object obj, String methodName)
			throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		Class<?> clazz = obj.getClass();
		Method[] method = clazz.getDeclaredMethods();
		for (Method m : method) {
			System.out.println(m.getName());
			/**
			 * 跳过非指定的方法
			 */
			if (!m.getName().equals(methodName)) {
				continue;
			}
			// 获取参数类型的数组 里面有参数的个数 和参数的类型
			Class<?>[] peremeters = m.getParameterTypes();
			return peremeters;
		}
		return null;
	}
}
class A {
	public void show(Test t) {
		System.out.println("success");
	}
	public void print(String s1, String s2) {
		System.out.println(s1 + s2);
	}
	public void work(String[] arr) {
		System.out.println(arr);
	}
}
 
版权声明:本文为qq_34183030原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
