java中如何通过反射与原始类型作为参数调用方法(Java how to call method b

2019-07-03 20:54发布

我有一类以下两种方法:

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

Answer 1:

调用与原始类型如使用反射参数的方法:

你可以使用int.class

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

Integer.TYPE

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

这同样适用于其他基本类型



Answer 2:

奇怪但却真实:

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


文章来源: Java how to call method by reflection with primitive types as arguments