小编Zwe*_*in2的帖子

java 反射列表 NoSuchMethodException

我目前正在开发用于自动化测试的命令行客户端。为此,我希望能够仅通过给定名称执行请求,因此我必须使用反射。

但是,我收到以下错误:

NoSuchMethodException: java.util.ArrayList.add(some.path.Foo)

在此代码上:

Object job = Class.forName(sClassName).getConstructor().newInstance();

List<?> jobObject = (List<?>) Request.getClass().getDeclaredMethod(sMethodName).invoke(Request);
jobObject.getClass().getDeclaredMethod("add", job.getClass()).invoke(Request, job);
Run Code Online (Sandbox Code Playgroud)

另一方面,以下代码有效(但不是解决方案,因为 Foo 应该是动态的,而不是硬编码的)

Object job = Class.forName(sClassName).getConstructor().newInstance();

List<Foo> jobObject = (List<Foo>) Request.getClass().getDeclaredMethod(sMethodName)).invoke(Request);
jobObject.add((Foo)job);
Run Code Online (Sandbox Code Playgroud)

边注:

  • sClassName = some.path.Foo
  • .getDeclaredMethod(sMethod).invoke(Request)返回一个对象(这是一个List< Foo>

我想要实现的是让代码与动态输入一起工作(例如Bar而不是Foo

java reflection list arraylist nosuchmethoderror

1
推荐指数
1
解决办法
736
查看次数

标签 统计

arraylist ×1

java ×1

list ×1

nosuchmethoderror ×1

reflection ×1