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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序