Jython: создание экземпляра класса Java в скрипте как объекта Java, а не объекта Python - PullRequest
2 голосов
/ 12 июля 2009

У меня проблема при использовании Jython, но я не могу найти решение в документации.

По сути, у меня есть объект, который был создан в Java, и я хочу создать экземпляр другого объекта Java (в скрипте python) и добавить в объект, который я создал в интерпретаторе 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, связанный как "b_inst"):

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

Когда я пытаюсь запустить приведенный выше код, я получаю следующее исключение: Ошибка типа: setB (): ожидается 2 аргумента; получил 1

Я почти уверен, что это потому, что метод setB () пытается вызвать метод для объекта Python, а не для фактического объекта Java. По сути, я ожидаю, что вызов setB () для экземпляра A, который я только что создал в скрипте jython, будет объектом java, а не объектом python.

Извините, если это очевидно, я прочитал учебники, а также разделы Jython "Java in Nutshell" и "Core Python Programming", но примеры действительно очень просты, у них нет примеров того, как выполните эту двустороннюю привязку.

1 Ответ

2 голосов
/ 13 июля 2009

Какую версию Jython вы используете? Я пытаюсь это с 2.5.0 и следующие работы:

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

Ему не понравился синтаксис com.package.A(), поэтому я изменил его на то, что вы видите здесь.

...