java - 从 Jython 中的 Java 项目访问方法

标签 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");

这种事有可能吗?

预先感谢并为我糟糕的英语感到抱歉^^

最佳答案

您可以像这样在 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/

相关文章:

java - String类以及Java对其的依赖

java - 如何在 Log4j 中使用 SizeBasedTriggeringPolicy 和 TimeBasedRollingPolicy?

java - 如何操纵一天中的时间范围

linux - 从特定字段不以某些内容开头的文件中打印行

java - 机器人框架 - 来自谷歌文档的示例不起作用

Java Android - 为什么我的调试看不到类

linux - UNIX,更改所有 shell 脚本中的解释器行

linux - 格式化 shell 命令输出

使用运行时调用 python 脚本时的 Java.Error

java - Java 中的 Jython 错误 : ImportError: No module named type_check