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

时间:2021-08-28 05:27:48

I have the following two methods in a class:

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

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

The following line of code

以下代码行

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

prints 2 , how to make it print 1?

打印2,如何打印1?

2 个解决方案

#1


89  

To call a method with primitive types as parameters using reflection :

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

You could use int.class

你可以使用int.class

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

or Integer.TYPE

或Integer.TYPE

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

same applies for other primitive types

同样适用于其他原始类型

#2


9  

Strange but true:

奇怪但真实:

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

#1


89  

To call a method with primitive types as parameters using reflection :

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

You could use int.class

你可以使用int.class

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

or Integer.TYPE

或Integer.TYPE

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

same applies for other primitive types

同样适用于其他原始类型

#2


9  

Strange but true:

奇怪但真实:

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