2

Jython の使用時に問題が発生しましたが、ドキュメントで解決策が見つからないようです。

基本的に、私が持っているのは Java でインスタンス化されたオブジェクトであり、(python スクリプトで) 別の Java オブジェクトをインスタンス化し、jython インタープリターでインスタンス化したオブジェクトに事前に設定された Java オブジェクトを追加したいと考えています。

例えば:

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 スクリプト (「b_inst」としてバインドされた B のインスタンスがあります):

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

上記のコードを実行しようとすると、次の例外が発生します: TypeError: setB(): expected 2 args; 1を得た

これは、setB() メソッドが実際の Java オブジェクトではなく、Python オブジェクトでメソッドを呼び出そうとしているためだと確信しています。基本的に、AI のインスタンスでの setB() の呼び出しは、jython スクリプトで作成されたばかりで、python オブジェクトではなく Java オブジェクトになると予想しています。

これが明らかな場合は申し訳ありませんが、チュートリアルと「Java in a Nutshell」および「Core Python Programming」のJythonセクションを読みましたが、例は本当に簡単で、この2つを行う方法の例はありません-ウェイバインディング。

4

1 に答える 1