Я собираюсь написать свой собственный интерфейс Python-Java.Он скомпилирован как DLL и упакован с использованием ctypes.
Тем не менее, можно найти Java-классы и выделить Java-объекты.Но что было бы интерфейсом к другому языку без использования этих методов объектов?Моя цель - сделать это как можно более естественным.К сожалению, просто невозможно найти Java-методы только по имени.
Моя модель следующая:
JClass
- Экземпляр этого класса представляет класс Java.
JObject
- Экземпляр этого класса представляет объект Java.Он должен быть инициализирован экземпляром JClass.(но, конечно, позже должны быть аргументы и для конструктора.)
JMethod
Представляет метод Java-объекта.Он содержит имя и подпись нужного метода.Сигнатура динамически оценивается классами, указанными при инициализации.
Пример:
mainMethod = JMethod('main', JStringArray)
Обратите внимание, что JStringArray
является экземпляром JClass, представляющим массив строк.
JMethod может быть добавлен к экземпляру JClass.Но тогда может быть вызван только из экземпляра JObject.
JStaticMethod
- Точно так же, как JMethod, но его также можно вызвать из экземпляра JClass.1040 *
Встроенные типы
Я делаю JInt
, JShort
, JLont
, JChar
и т. Д., Чтобы бытьтипы встроенных упаковщиков.
Как:
JInt = JClass('java/lang/Integer')
JShort = JClass('java/lang/Short')
JString = JClass('java/lang/String')
Вопрос (ы) :
- ЧтоВы думаете об этом проекте?
- Функции JNI для вызова методов Java-класса / -объекта принимают переменное количество аргументов.После прочтения нескольких тем о вызове функции с переменными аргументами из функции, которая делает это, а также о том, что здесь мы задали вопрос о SO, я понимаю, что это невозможно.
Теперь есть функции, которые не принимаютпеременное число аргументов, но va_list
или что-то еще?Мне просто нужно найти способ вызова метода из Python в Java!