有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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) 个答案

  1. # 1 楼答案

    您正在请求接受Integer的方法。将其更改为需要int的选项,即可完成以下操作:

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

    请注意,尽管int是一种基本类型,但仍有as int.class。它的存在正是出于这个原因