如何在Jython中导入带有美元符号($)的Java类名,或引用带有一个美元符号的字段或方法? [英] How do I import a java classname with a dollar sign ($), or refer to a field or method with one, in Jython?
本文介绍了如何在Jython中导入带有美元符号($)的Java类名,或引用带有一个美元符号的字段或方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
幼稚的尝试失败:例如
from mypackage import SomeClass$
给予
javax.script.ScriptException:SyntaxError:在第1行的字符"$"处没有可行的选择
javax.script.ScriptException: SyntaxError: no viable alternative at character '$' in at line number 1
这个问题与Java嵌套类无关,后者可以在Jython中轻松导入.
This question is unrelated to java nested classes, which are easily importable in Jython.
例如,此类是scala.Predef$
类,然后可以使用Predef$.foobar
进行访问.
Such a class is for example the scala.Predef$
class, which one can then access with Predef$.foobar
.
如何实现此导入?
推荐答案
我找到了使用Java反射的解决方案,如下所示:
I found a solution using Java Reflection like this:
from java.lang import Class
person = Class.forName("full.path.to.Person$").getField("MODULE$").get(None)
虽然不漂亮,但是可以.如果可以的话,最好使用Scala反射API.
It's not pretty but it works. It might be nicer to use the Scala reflection API if that's available.
这篇关于如何在Jython中导入带有美元符号($)的Java类名,或引用带有一个美元符号的字段或方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文