我要写我自己的Python-Java界面。它被编译为DLL并使用ctypes包装。我的Python-Java界面,好的设计?以及如何包装JNI函数?
但是,可以找到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')
问题(S):
- 你怎么看待这样的设计呢?
- JNI函数用于调用Java类/对象的方法所有 都接受可变数量的参数。在阅读 几个主题后,从一个函数中调用一个可变参数的函数, 并且在这里也提出了一个问题,我知道这是不可能的。
现在,是否有函数不采取可变数量的参数 但va_list
什么?我只需要找到一些方法从Java中调用Python的方法!
刚刚从2年前看过我的回答,并意识到这是令人难以置信的粗鲁......我真的很抱歉。谢谢你不像我那样混蛋。 –