虽然知道使用反射不是一种好的测试方法,但我正在尝试测试我的代码。我有一个外部类作为public,有一个私有的内部类和一个公共方法,如下所示,
public class Outer {
private class Inner {
private int var = 1;
public Inner(int a) {
System.out.println("___");
}
public void test(int a) {
System.out.println("Hey");
}
}
}
我的主要java类如下所示
main() {
Outer b = new Outer();
System.out.println(b);
Class<?> innerClass = Class.forName("car.Outer$Inner");
Constructor<?> constructor = innerClass.getDeclaredConstructor(Outer.class, 1);
constructor.setAccessible(true);
Object c = constructor.newInstance(b,b);
Method method = c.getClass().getDeclaredMethod("test");
method.setAccessible(true);
method.invoke(c, 1);
}
这是投掷
线程“main”java中出现异常。lang.NoSuchMethodException:汽车。外部$内部。java上的test()。lang.Class。car上的getDeclaredMethod(Class.java:2130)。A、 main(A.java:36)
如何使用反射调用带参数的内部类方法?
您需要在调用getDeclaredMethod()时提供参数类。当调用getDeclaredMethod()时,第一个参数是要查找的方法的名称,其余任何参数都是所需方法的参数类。这就是getDeclaredMethod()
如何区分重载方法名以获得一个特定方法。由于您没有提供额外的参数,getDeclaredMethod()
正在寻找一个名为test的方法,该方法不接受任何参数。你得到了一个异常,因为你在类中没有这样的方法。您唯一的测试方法是取int参数,因此下面应该做您想做的事情:
Method method = c.getClass().getDeclaredMethod("test", int.class);
这里,int.class
是对应于原始参数类型的对象。
大家好,我正在使用Java反射来调用方法,并将参数传递给这些方法。下面是示例代码 用于调用方法的一段代码 其中test=“method1”/“method2”/“method3” obj是基类的对象 上面的代码抛出的是NOSuchmethodException
我有一个方法如下: 为了通过反射调用此函数,我尝试了以下代码段,但结果不成功: 那么,有没有一种方法可以通过Java反射调用像findEntity这样的方法? 谢谢
我目前试图通过反射执行一个方法,但方法参数只是一个列表。 该方法如下所示: 但Java对待他们就像 问题是参数的长度不同,该方法可以有任意数量的参数。 有没有办法解决这个问题?
问题内容: 我需要使用反射从另一个主要方法调用Java类的主要方法。 必须使用反射,以消除被调用主类的编译时依赖性。直截了当的方法并没有产生效果,因为它只识别“公共”和“非静态”方法。有什么建议吗? 问题答案: 不应比调用任何其他函数更复杂: 但是我真的看不到有什么用途,只要您不使用特定的代码路径,就可以买到该程序,而无需链接另一个程序,这是它唯一能为您带来的好处,但是如果这是您需要的,在这里走
我用java反射写了下面的代码。在这段代码中,我调用了有参数的方法1(),代码运行时没有错误。没关系。但是我如何调用没有参数的方法2()和方法3()呢?如何在java反射中调用没有参数的方法?Java支持这样的功能吗?
我正在编写一个学习反射的示例应用程序。我试图使用反射从另一个类调用一个类中定义的主方法,但我得到了 线程“main”java中出现异常。lang.IllegalArgumentException:参数类型不匹配 在下面查找我正在尝试执行的代码。 调用main方法的类 要调用其主方法的类