通过class方法名和参数反射方法
程序员文章站
2022-03-03 11:49:51
...
import java.lang.reflect.Method; public class Executor<T> { /** * * @param clazz 执行类的class * @param str 方法名 * @param obj 参数 * @return * @throws Exception */ @SuppressWarnings("unchecked") public T getObject(Class clazz,String str,Object[] obj) throws Exception{ Class[] cla=new Class[obj.length]; if(obj.length==0){ cla=null; }else{ for(int i=0;i<obj.length;i++){ cla[i]=obj[i].getClass(); } } Method m=clazz.getMethod(str,cla); return (T)m.invoke(clazz.newInstance(), obj); } public static void main(String[] args) { try { new Executor<>().getObject(A.class, "printString",new Object[]{"string",1}); } catch (Exception e) { e.printStackTrace(); } } } class A{ public void printString(String str,Integer i){ System.out.println(str+i); } }
结果:
string1
上一篇: 简单的Spring的bean实例化过程
下一篇: 基于反射进行对象属性的拷贝