66

我在一个类中有以下两种方法:

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

以下代码行

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

打印2,如何打印1

4

2 回答 2

126

使用反射调用以原始类型作为参数的方法:

你可以使用 int.class

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

或者Integer.TYPE

this.getClass().getMethod("Test",Integer.TYPE).invoke(this, 10);

同样适用于其他原始类型

于 2012-11-16T06:23:19.143 回答
15

奇怪但真实:

this.getClass().getMethod("Test",int.class).invoke(this, 10);
于 2012-11-16T06:18:47.740 回答