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

Bha*_*oya 0 java reflection

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

以下代码行

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

打印2,如何打印1?

Axe*_*xel 5

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

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

请注意,int.class虽然int是原始类型.它正是因为这个原因而存在的.