我目前正在使用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");


有什么可能吗?

在此先感谢您,我的英语不好^^

最佳答案

您可以像这样在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代码中为Jython脚本在Map中用名称注册实例。

关于java - Jython中来自Java项目的访问方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19229106/

10-14 17:10
查看更多