当前位置: 首页 > 面试题库 >

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

燕寒
2023-03-14
问题内容

我在类中有以下两种方法

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


问题答案:

要使用反射调用以原始类型作为参数的方法:

你可以用 int.class

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

要么 Integer.TYPE

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

同样适用于其他原始类型



 类似资料:
  • 我有一个方法如下: 为了通过反射调用此函数,我尝试了以下代码段,但结果不成功: 那么,有没有一种方法可以通过Java反射调用像findEntity这样的方法? 谢谢

  • 问题内容: 我的测试框架中有一个方法可以创建类的实例,具体取决于传入的参数: 问题是,如果构造函数具有基本类型,则这将不起作用,如下所示: 结果是: 原始int会自动装箱到对象版本中,但是如何返回它们以调用构造函数? 问题答案: 使用代替。 根据Javadocs,这是“表示原始类型的Class实例”。 您也可以使用。这是的快捷方式。不仅是类,甚至对于原始类型,您都可以用Java表示。

  • 问题内容: 想象以下情况: 我正在专门使用反射来分析MyClass ,在这种情况下,我将获得以下字段(和Types,使用Field的getType()): 我想获取T的实际Type,由于扩展符号中的显式“ String”,因此在运行时就知道了它,我该如何获取myField的非遗传类型? 解决的编辑: 答案似乎是“你做不到”。对于以后可能看这个问题的人,我建议使用Jackson(我试图这样做来生成J

  • 问题内容: 如何在Java中通过引用传递基本类型?例如,如何使传递给方法的值可修改? 问题答案: 在Java中,没有一种方法可以通过引用直接传递基元。 一种解决方法是改为将引用传递给包装类的实例,该实例然后将原语包含为成员字段。这样的包装器类可能非常容易为自己编写: 但是,一些预先构建的包装器类又如何,因此我们不必编写自己的包装器类?

  • 问题内容: 考虑以下代码: 我对标有的参数的值感兴趣。假设我已经通过反射(使用)弄清楚了哪个方法参数具有注释。(我知道这是参数列表中的第三个参数。) 现在如何检索值以进一步使用? 问题答案: 你不能 反射无法访问局部变量,包括方法参数。 如果您需要该功能,则需要拦截方法调用,可以通过以下几种方法之一进行操作: AOP(AspectJ / Spring AOP等) 代理(JDK,CGLib等) 在所

  • 问题内容: 想要将arraylist类型的参数传递给我要调用的方法。 我遇到一些语法错误,所以我想知道这是什么问题。 方案1: 方案2(不相同,但相似): 问题答案: 您的(主要)错误是在参数中传递了不必要的泛型类型。我试图编写一个与您的代码相似但可以正常工作的简单代码。希望它可以某种方式回答您的问题: