使用反射调用方法时,区分int和Integer参数

时间:2014-06-06 13:49:31

标签: java reflection

public void getData(int i){
    System.out.println("1");
}
public void getData(Integer i){
    System.out.println("2");
}

以下代码行

this.getClass().getMethod("getData",Integer.class).invoke(this, 10);

打印2,如何打印1?

1 个答案:

答案 0 :(得分:5)

您正在请求接受Integer的方法。将其更改为需要int的那个并且您已完成:

this.getClass().getMethod("getData",int.class).invoke(this, 10);

请注意int.class虽然int是基本类型。它完全是出于这个原因。