java 禁止 动态调用,Java 不使用import根据动态类名调用其方法

背景

抽取一个公共类的时候,需要可以调用其他类的方法,但是又不想使用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里获取第三方接口是返回不了结果的,这就很尴尬了,居然是因为没有注入需要的数据😭,好的吧,至此问题解决!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值