gpt4 book ai didi

java - 无法使用 Reflection API 访问方法

转载 作者:行者123 更新时间:2023-11-30 01:40:48 26 4
gpt4 key购买 nike

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

jasperReport.getDefaultStyle().setFontName()

'setFontName' 采用字符串作为方法参数并将其设置为字体。我正在尝试像这样在 rutime 期间更改字体值

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");
因为您需要将新值作为参数传递。翻译为“普通”java 它将是 jasperReport.getDefaultStyle().setFontName("Helvetica")
而不是
jasperReport.getDefaultStyle().setFontName().fontName = "Helvetica"
我认为您发现这没有意义,因为您首先使用不带参数的 setter() 设置字段,然后尝试在返回的 void 上设置字段

关于java - 无法使用 Reflection API 访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60101627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com