wild84 2017-04-12 03:05 采纳率: 80%
浏览 1755
已采纳

java使用反射调用类方法

我现在的程序如下:

 public class Ob {
    private String classPath;
    private String methodName;
    private Map<String, Object> para;

}
class Demo2 {
    public void print(String string) {
        System.out.print(string+"demo2");
    }
}
class Demo {
    public void print(String string,int i) {
        System.out.print(string+i+"demo1");
    }
}

我想编写一个方法:它接收ob对象,根据ob对象的属性反射调用其他类的方法,调用的实参由ob的para获得. 我想到的是使用map设置实参,或者你有更好的办法也可以.
请问如何实现?可以帮我完成这个demo么?

  • 写回答

5条回答 默认 最新

  • 吾日三省Java 2017-04-12 11:22
    关注

    public static void main(String[] args) throws Exception {
    // Ob ob = new Ob("test.pd.Demo2","print","hahaha");
    Ob ob = new Ob("test.pd.Demo","print","hahaha",25);
    Class<?> cal = Class.forName(ob.getClassPath());
    System.out.println("cal:"+cal);
    Object[] params = ob.getPara();
    List> cals = new ArrayList>(params.length);
    for (Object param : params) {
    cals.add(param.getClass());
    }
    Method method = cal.getMethod(ob.getMethodName(),cals.toArray(new Class[]{}));
    System.out.println(method);
    method.invoke(cal.newInstance(),params);
    }

    注意:将public void print(String string,int i)修改为public void print(String string,Integer i)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计