从Jython中的Java项目访问方法

时间:2013-10-07 15:48:17

标签: java scripting jython

我目前正在用Java编写一个随着时间的推移而变得越来越大的游戏。 所以现在我正处于更加动态的代码实现变得非常方便的地步。 我决定看看Jython,并且已经使用了一些简单的脚本。 (顺便说一句,如果它以某种方式重要的话,我正在使用最新的独立Jython)。

现在我的问题是:我可以在上述Java项目中执行的Jython脚本中执行Java项目中的方法吗?

以下是伪代码的示例,以便更好地理解我想要问的内容:

假设我的脚本如下所示:

def main():
    killPlayer()

main()

包含方法“killPlayer()”的Java类:

public void killPlayer() {
    player.setAlive(false);
}

Jython脚本执行如下:

PythonInterpreter pyInterp = new PythonInterpreter();
pyInterp("script.py");

有什么可能吗?

提前致谢并抱歉我的英语不好^^

1 个答案:

答案 0 :(得分:1)

您可以在Jython中导入Java类,如下所示:

from javax.swing import JFrame
f = JFrame('Hello, World!', defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(300, 300), locationRelativeTo=None)
f.setVisible(True)

source

所以我的建议是将Java代码用作库并在Python中实现“设置所有内容”。这样,您就不需要找到从脚本中查找Java对象实例的方法。

如果你需要查找实例,我建议在某处创建一个静态全局变量,它允许你访问暴露重要游戏实例的类。在Java代码中,您可以使用Map中的名称为Jython脚本注册实例。