gpt4 book ai didi

java - 如何在不在 JEXL 中创建该类的实例的情况下调用 java 类的静态方法?

转载 作者:行者123 更新时间:2023-11-29 09:31:39 26 4
gpt4 key购买 nike

我想在不将任何对象放入 JEXL 上下文的情况下调用类的静态方法。

对于实例方法,我们将一个对象放入 MapContext 并使用键来调用该方法。但就我而言,我没有任何上下文。 ${person.howYouDoing()} 我不想使用 person 对象放在上下文中。

最佳答案

https://issues.apache.org/jira/browse/JEXL-140 上对此作为 JEXL 的改进进行了很好的讨论。 .

提出这个要求的人提出了一个解决方案,将负担放在 JEXL 程序员身上。它创建一个 String 只是为了获取 String 类,该类仅用于查找所需的类。

${''.class.forName('person').howYouDoing()}

...假设“person”在默认包中。这可用于为没有公共(public)构造函数的类调用静态构造函数,例如 Pattern:

${''.class.forName('java.util.regex.Pattern').compile('\\d{2}-(\\w{3})-\\d{2}')}

顺便说一下,JEXL 开发人员建议子类化 JexlContext 以始终返回任何存在的类。这比要求您的模板编写者执行 ''.class.forName() hack 更优雅,但由于您不想修改您的 MapContext,它可能不会满足你的问题。它还会污染所有类的上下文。

关于java - 如何在不在 JEXL 中创建该类的实例的情况下调用 java 类的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48584179/

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