下面是反射封装的代码,废话不多说直接看代码
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 版权协议,转载请附上原文出处链接和本声明。