我的PythonJava界面,设计好吗?以及如何包装JNI函数?

2024-09-30 01:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我将编写自己的pythonjava接口。它被编译为DLL并 使用ctypes包装。在

但是,可以找到Java类并分配Java对象。 但是如果不使用这些对象,到另一种语言的接口是什么呢 方法?我的目的是让这一切尽可能自然。不幸的是, 不仅仅是通过名称找到Java方法。在

我的模型如下:

J类

  • 这个类的一个实例表示一个Java类。在

工程项目

  • 此类的实例表示Java对象。一定是的 用JClass实例初始化。(当然,稍后会有 也应该是构造函数的参数。)

J方法

  • 表示Java对象的方法。它包含所需方法的名称和签名。签名由初始化时给定的类动态求值。在

    示例:

    mainMethod  = JMethod('main', JStringArray)
    

    注意,JStringArray是JClass的一个实例,它表示一个字符串数组。在

    JMethod可以添加到JClass实例中。但只能从实例化的JObject调用。

JSTATIC方法

  • 就像JMethod一样,但它也可以从JClass调用 实例。在

内置类型

  • 我在做JIntJShortJLontJChar,等等。。成为 内置包装类型。在

    比如:

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

问题

  1. 你觉得这个设计怎么样?在
  2. 调用Java class/-object方法的JNI函数 接受可变数量的参数。在阅读了关于 从这样做的函数调用带有变量参数的函数, 我还问了一个问题,我知道这是不可能的。
    现在,有没有不带可变参数的函数 但是一个va_list还是什么?我只需要找到一些方法在Java中从Python调用一个方法!在

Tags: 对象实例方法函数名称类型lang参数
1条回答
网友
1楼 · 发布于 2024-09-30 01:34:09

1。我觉得这个设计怎么样?

  • 不清楚你到底想解决什么问题。

  • 边缘情况如何;错误处理;向前/向后兼容性;Python/Java中的bug?不好玩,但对健壮的软件是必不可少的。

  • 混合两种语言已经够难的了,混合三种语言肯定要糟糕得多。我预计主要的可维护性和耦合问题。

  • 这些问题已经有了解决办法。RPC,用于让不同语言的程序相互通信。Jython,用于Java/Python互操作性。我相信,Jython甚至允许您用Java创建Python对象,反之亦然。澄清这些现有系统的任何缺点,以及如何解决这些缺点,将是很有帮助的。

以下是一些遗漏的东西:

  • 包装
  • 隐私
  • 接口/抽象类
  • 方法解析:重载和重写(特别是当有多个方法匹配时)
  • 例外情况
  • 类型检查,或从类型错误中恢复

2。我只需要找到一些方法在Java中从Python调用一个方法!Jython、RPC或者只是调用一个可执行文件呢?在

相关问题 更多 >

    热门问题