背景
抽取一个公共类的时候,需要可以调用其他类的方法,但是又不想使用import导入,考虑使用反射
public Response test()
{
String className = "pic";
String methodName = "getInitData";
className = "cn.sm.quark.vt.service.api." + StringUtil.ucfirst(className);
try {
Class clazz = Class.forName(className);
Base instance = null;
try {
instance = (Base) SpringUtil.getBean(clazz);
} catch (Exception e) {}
if (instance == null) {
instance = (Base) clazz.newInstance();
}
Method methodInit = clazz.getMethod(methodName);
methodInit.invoke(instance);
System.out.println(111111);
System.out.println(instance.getData());
} catch (Exception e) {
System.out.println(333333);
System.out.println(e.getMessage());
}
return this.renderJson("");
}
被调用方法
public Response getInitData()
{
System.out.println("pic的方法开始执行了");
return this.renderJson("pic的方法开始执行了");
// String res = this.getFunctions().getJyData("application_3539", cache, 300);
// System.out.println(res);
// JSONArray resArray = JSON.parseArray(res);
//
// return this.renderJson(resArray);
}
打印结果
pic的方法开始执行了
111111
Response{status=0, code=11000000, msg='成功', data=pic的方法开始执行了}
直接返回时候可以的,但是我在getinitData
里获取第三方接口是返回不了结果的,这就很尴尬了,居然是因为没有注入需要的数据😭,好的吧,至此问题解决!