Мой интерфейс Python-Java, хороший дизайн? А как обернуть функции JNI?

Я собираюсь написать свой собственный интерфейс 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 .

Встроенные типы

  • Я использую JInt , JShort , JLont , JChar и т. Д., Чтобы быть встроенными типами оболочки .

    Например:

     JInt = JClass ('java / lang / Integer') 
    JShort = JClass ('java / lang / Short') 
    JString = JClass ('java / lang / String ') 
     

Вопрос (ы) :

  1. Что вы думаете об этом проекте?
  2. JNI-функции для вызова методов Java -class / -object all принимают переменное количество аргументов. Прочитав несколько тем о вызове функции с переменными аргументами из функции, которая делает это, , а также задали здесь вопрос о SO, я понимаю, что это невозможно.
    А есть функции, которые принимают не переменное количество аргументов , а va_list или что-то в этом роде? Мне просто нужно найти способ вызвать метод из Python на Java!
6
задан Pang 4 February 2015 в 01:10
поделиться