java - 使用反射调用方法时 int 和 Integer 参数的区别

标签 java reflection

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?

最佳答案

您正在请求接受整数的方法。将其更改为需要 int 的值,然后就完成了:

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

请注意,尽管 int 是原始类型,但还是有 int.class 。它正是因为这个原因而存在。

关于java - 使用反射调用方法时 int 和 Integer 参数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24083444/

相关文章:

java - 替换没有空格的字符串中的字符序列 - java

java - 无法在fragment中实现Recycler View 适配器

java - 用于检查实时 Java 应用程序的实时代码覆盖率查看器工具?

android - 在 Lollipop 中启用或禁用移动数据

java - 非法参数异常 : object is not an instance of declaring class

java - jenkins在这个环境下没有提供编译器

java - 找到给定时间范围内所有可能的时间组合

java - 当传递枚举的字符串值时,如何在运行时访问任何已知枚举的值?

c# - 我可以在不知道 dll 文件名的情况下加载程序集吗,我只知道命名空间名称

java - 从 java 变量调用类方法