如何在Jython中导入带有美元符号($)的Java类名,或引用带有一个美元符号的字段或方法? [英] How do I import a java classname with a dollar sign ($), or refer to a field or method with one, in Jython?

查看:225
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆