gpt4 book ai didi

java - 我的 Python-Java 接口(interface),好的设计?以及如何包装 JNI 函数?

转载 作者:太空狗 更新时间:2023-10-29 22:16:48 25 4
gpt4 key购买 nike

我要编写自己的 Python-Java 接口(interface)。它被编译为一个 DLL 并且使用 ctypes 包装。

然而,找到 Java 类并分配 Java 对象是可能的。但是如果不使用这些对象,什么是另一种语言的接口(interface)方法?我的目标是让它尽可能自然。很遗憾,只能通过名称查找 Java 方法是不可能的。

我的模型如下:

J类

  • 此类的一个实例表示一个 Java 类。

对象

  • 此类的一个实例表示一个 Java 对象。它一定要是使用 JClass 实例初始化。 (然而,当然,后来也应该是构造函数的参数。)

J方法

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

    例子:

    mainMethod  = JMethod('main', JStringArray)

    请注意,JStringArray 是表示字符串数组的 JClass 实例。

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

JStaticMethod

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

内置类型

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

    喜欢:

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

问题:

  1. 您觉得这个设计怎么样?
  2. JNI-Functions 用于调用 Java 类/对象的方法 接受可变数量的参数。在阅读了几个主题之后 从这样做的函数调用带有可变参数的函数, 并且还在这里问了一个关于 SO 的问题,我知道这是不可能的。
    现在,是否有函数不接受可变数量的参数 但是 va_list 什么的?我只需要找到一些方法在 Java 中从 Python 调用方法!

最佳答案

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

  • 不清楚您要解决的实际问题是什么。

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

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

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

这里有一些遗漏的东西:

  • 套餐
  • 隐私
  • 接口(interface)/抽象类
  • 方法解析:重载和覆盖(尤其是当有多个方法匹配时)
  • 异常(exception)情况
  • 类型检查,或从类型错误中恢复

<强>2。我只需要找到一些方法在 Java 中从 Python 调用方法! Jython、RPC 或只是调用可执行文件怎么样?

关于java - 我的 Python-Java 接口(interface),好的设计?以及如何包装 JNI 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com