wild84
2017-04-12 03:05
采纳率: 99.5%
浏览 1.7k
已采纳

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条回答 默认 最新

  • JQ棣 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条)

相关推荐 更多相似问题