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

如何使用反射在Java中调用带有可变参数的方法?

米元凯
2023-03-14
问题内容

我正在尝试使用java反射调用带有可变参数的方法。这是托管方法的类:

public class TestClass {

public void setParam(N ... n){
    System.out.println("Calling set param...");
}

这是调用代码:

try {
        Class<?> c = Class.forName("com.test.reflection.TestClass");
        Method  method = c.getMethod ("setParam", com.test.reflection.N[].class);
        method.invoke(c, new com.test.reflection.N[]{});

我在调用invoke的最后一行以“错误数量的参数” 的形式获取IllegalArgumentException 。不知道我在做什么
错。

任何指针将不胜感激。

谢谢


问题答案:

public class Test {

public void setParam(N... n) {
    System.out.println("Calling set param...");
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws Exception {
    Test t=new Test();
    Class<?> c = Class.forName("test.Test");
    Method  method = c.getMethod ("setParam", N[].class);
    method.invoke(t, (Object) new N[]{});
}
}

为我工作。

  1. 将您的N []投射到对象
  2. 在实例上调用,而不在类上调用


 类似资料:
  • 我用java反射写了下面的代码。在这段代码中,我调用了有参数的方法1(),代码运行时没有错误。没关系。但是我如何调用没有参数的方法2()和方法3()呢?如何在java反射中调用没有参数的方法?Java支持这样的功能吗?

  • 问题内容: 我想使用反射调用Rows.Scan()函数。但是,它需要使用可变数量的指针,但是没有很多源示例。我需要使用反射,因为我计划用Query调用中的值填充一个切片。因此,基本上使用来获取行的长度,然后使用来切片以填充通常使用传递给函数的指针填充的数据点。 基本上像这样的代码: 有人举过一个调用可变参数函数的例子,该函数使用我可以查看的反射来获取指针? 编辑:似乎没有做我想要的示例代码。 结果

  • 问题内容: 简单的问题,如何使此代码起作用? 输出: 问题答案: 作品。问题在于仅搜索方法。从javadoc: 返回一个Method对象,该对象反映此Class对象表示的类或接口的指定公共成员方法。 更新: 成功获取方法后,可以使用以下方法调用它: 即- 用一个元素创建一个新数组-该数组。使用变量名,它看起来像:

  • 问题内容: 如何使用反射调用带有参数的方法? 我想指定这些参数的值。 问题答案: 这是一个使用涉及原语的反射调用方法的简单示例。 要健壮,应该捕获和处理所有检查反射有关的异常,,。

  • 大家好,我正在使用Java反射来调用方法,并将参数传递给这些方法。下面是示例代码 用于调用方法的一段代码 其中test=“method1”/“method2”/“method3” obj是基类的对象 上面的代码抛出的是NOSuchmethodException

  • 问题内容: 当使用反射从另一个主要方法调用Java类的主要方法时, 我应该创建newInstance()还是直接调用main(),因为它是静态的。 问题答案: 对于您陈述的要求(动态地调用随机类的main方法,通过反射,您有很多不必要的代码。 您不需要为该类调用构造函数 您不需要内省类字段 由于您正在调用静态方法,因此甚至不需要真正的对象来调用该方法。 您可以修改以下代码来满足您的需求: