java 通过路径反射获取类对象方法

2022-06-14 07:55:57

核心代码:

通过路径反射获得该类,然后实例化该类。
注意:
参数个数不固定,所以参数类型argsClass 和参数值args 要用数组。

String className="com.XXX.TestEntity";String methodName="returnParam";Object[] args={"-1"};Class[] argsClass=newClass[1];
	argsClass[0]=java.lang.Object.class;try{Class c=Class.forName(className);// 通过类名获得ClassObject obj= c.newInstance();// 实例化类Method methodReflect= obj.getClass().getMethod(methodName,
				argsClass);// 反射获得方法String value=(String) methodReflect.invoke(obj, args);// 调用此方法System.out.println(value);}catch(Exception e){
		e.printStackTrace();}

应用:

TestEntity.java

//publicclassTestEntity{privateString name;privateint age;publicvoidnoall(){System.out.println("测试方法--noall");}publicvoidparam(String s){System.out.println("测试方法--param:"+s);}publicStringreturnf(){System.out.println("测试方法--return :returnf");return"returnf";}publicStringreturnParam(Object value){if(StringUtils.isEmpty(String.valueOf(value))){return"";}else{String str=String.valueOf(value)+"returnParam";System.out.println("测试方法--param:"+String.valueOf(value)+"--return:"+str);return str;}}}

主应用main.java

try{Object obj=Class.forName("com.XXX.TestEntity").newInstance();Class c= obj.getClass();Method[] methods= c.getMethods();for(int i=0;i<methods.length;i++){Method method= methods[i];Class<?>[] paramType= method.getParameterTypes();String returnType=String.valueOf(method.getReturnType());if("void".equals(returnType)){System.out.println("循环:"+i+"   方法名:"+methods[i].getName()+"   方法参数类型:"+String.valueOf(paramType)+"   方法返回类型:"+String.valueOf(returnType));}else{Object return1=null;if(paramType.length>0){
					return1= method.invoke(obj,"param");}else{
					return1= method.invoke(obj);}System.out.println("循环:"+i+"   方法名:"+methods[i].getName()+"   方法参数类型:"+String.valueOf(paramType)+"   方法返回类型:"+String.valueOf(returnType)+"   方法返回值:"+String.valueOf(return1));}}}catch(Exception e){thrownewRuntimeException("创建对象失败", e);}
  • 作者:码农?
  • 原文链接:https://blog.csdn.net/weixin_45478419/article/details/122728487
    更新时间:2022-06-14 07:55:57