java - Jython:将脚本中的java类实例化为Java对象,而不是Python对象

标签 java jython objectinstantiation

我在使用 Jython 时遇到问题,但我似乎无法在文档中找到解决方案。

基本上,我拥有的是一个已在 Java 中实例化的对象,我想实例化另一个 Java 对象(在 python 脚本中),并将预先实例化的 java 对象添加到我在 jython 解释器中实例化的对象中.

例如:

public class A {
    private B bInstance;

    public void setB(B bval) {
        bInstance = b;
    }
}

public class B {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String n) {
        this.name = n;
    }
}

python 脚本(有一个绑定(bind)为“b_inst”的 B 实例):

import com.package.A
a_inst = com.package.A()
a_inst.setB(b_inst)

当我尝试运行上面的代码时,出现以下异常: 类型错误:setB():预期 2 个参数;得到 1

我很确定这是因为 setB() 方法试图调用 Python 对象上的方法,而不是实际的 java 对象上的方法。基本上,我希望对我刚刚在 jython 脚本中创建的 A 实例的 setB() 调用是一个 java 对象,而不是 python 对象。

抱歉,如果这是显而易见的,我已经阅读了“Java in a Nutshell”和“Core Python Programming”的教程以及 Jython 部分,但是这些示例非常非常简单,他们没有关于如何执行此双向绑定(bind)。

最佳答案

您使用的是哪个版本的 Jython?我正在使用 2.5.0 进行尝试,效果如下:

from com.package import A, B
b_inst = B()
a_inst = A()
a_inst.setB(b_inst)

它不喜欢 com.package.A() 语法,因此我将其更改为您在此处看到的内容。

关于java - Jython:将脚本中的java类实例化为Java对象,而不是Python对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115451/

相关文章:

java - 将 3D 数组展平为 1D 数组

java - 您如何分析 Drools 应用程序?

java - blobstore 上传代码不起作用

Python Jython 全局变量使用

ios - 从静态库初始化对象时,在构建过程中发生编译错误

java - 创建字符串对象的最佳方法

java - 如何从两个 HashMap 中检索公共(public)键值对

python - 我如何抓取输入字符串的某些部分?

python - 解析 HTML 时遇到问题

java - 不使用 new 运算符实例化对象