无法使用反射访问方法 API

Cannot access a method using Reflection API

我正在尝试访问 setter 并使用反射 API 在 运行 时更改值。我有一个 JasperReport 对象,它有一个名为 getDefaultStyle 的方法,它又允许我调用 setFontName 方法,像这样

jasperReport.getDefaultStyle().setFontName()

'setFontName' 将字符串作为方法参数并将其设置为字体。我正在尝试像这样在运行时更改字体值

on(jasperReport).call("getDefaultStyle").call("setFontName").set("fontName", "Helvetica");

但是,我遇到了这个错误

org.jooq.tools.reflect.ReflectException: java.lang.NoSuchMethodException: No similar method setFontName with params [] could be found on type class java.lang.Object.

在反思方面不太有经验API,需要一些帮助。

我不知道这个倒影API不过你好像变身了 on(jasperReport).call("getDefaultStyle").call("setFontName").set("fontName", "Helvetica");
对此:
on(jasperReport).call("getDefaultStyle").call("setFontName", "Helvetica");
因为您需要将新值作为参数传递。 翻译成 "normal" java 就是 jasperReport.getDefaultStyle().setFontName("Helvetica")
而不是
jasperReport.getDefaultStyle().setFontName().fontName = "Helvetica"
我认为您认为这没有意义,因为您首先使用不带参数的 setter() 设置字段,然后尝试在返回的 void

上设置字段