Есть ли способ создания класса Python из Java с использованием Jython * без * того, чтобы этот класс Python расширял интерфейс Java?
Все примеры в документации Jython здесь требуют, чтобы класс Python импортировал соответствующий интерфейс Java, например:
# A python module that implements a Java interface to
# create a building object
from org.jython.book.interfaces import BuildingType
class Building(BuildingType):
def __init__(self, name, address, id):
self.name = name
self.address = address
self.id = id
...
Я бы предпочел не связывать мой код Python с моим кодом Java. Есть ли способ, которым я могу создать экземпляр класса Python из Java, не изменяя его, чтобы он указывал на интерфейс Java?
1 ответ
Наилучшим ответом, который я смог придумать, было внедрение Java-оболочек для каждого класса Python, который я хочу создать. Каждая оболочка Java содержит PyObject, но предоставляет статически типизированный доступ к своим полям, например
public class PeanutWrapper{
private PyObject pyObj;
public String getKind(){
return pyObj.__findattr__("kind");
}
...
}
Это работает, но это не такое элегантное решение, как я надеялся найти.