Java如何通过原始类型作为参数的反射来调用方法

Ear*_*ine 56 java reflection

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

public void Test(int i){
    System.out.println("1");
}
public void Test(Integer i){
    System.out.println("2");
}
Run Code Online (Sandbox Code Playgroud)

以下代码行

this.getClass().getMethod("Test",Integer.class).invoke(this, 10);
Run Code Online (Sandbox Code Playgroud)

打印2,如何打印1

Muk*_*oel 107

使用反射调用使用基本类型作为参数的方法:

你可以用 int.class

this.getClass().getMethod("Test",int.class).invoke(this, 10);
Run Code Online (Sandbox Code Playgroud)

要么 Integer.TYPE

this.getClass().getMethod("Test",Integer.TYPE).invoke(this, 10);
Run Code Online (Sandbox Code Playgroud)

同样适用于其他原始类型


Mis*_*ble 11

奇怪但真实:

this.getClass().getMethod("Test",int.class).invoke(this, 10);
Run Code Online (Sandbox Code Playgroud)