我目前正在用 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/