如何在 Jython 中导入带有美元符号 ($) 的 java 类名,或者用美元符号引用字段或方法



>朴素尝试失败:例如

from mypackage import SomeClass$

javax.script.ScriptException: 语法错误: 第 1 行中字符 '$' 处没有可行的替代方法

这个问题与java嵌套类无关,Java嵌套类很容易在Jython中导入。

例如,这样的类是scala.Predef$类,然后可以使用Predef$.foobar访问它。

如何实现此导入?

我找到了一个使用Java Reflection的解决方案,如下所示:

from java.lang import Class
person = Class.forName("full.path.to.Person$").getField("MODULE$").get(None)

它不漂亮,但它有效。如果可用,使用 Scala 反射 API 可能会更好。