gpt4 book ai didi

java - 从 jython 调用 java 方法的正确重载

转载 作者:行者123 更新时间:2023-11-30 09:12:50 24 4
gpt4 key购买 nike

我正在使用 java 库,它在我使用的类中有重载方法。

JAVA:
void f(float[]);
void f(Object[]);

现在我从 jython 调用这个类,我想调用 Object[] 重载。问题是 python 将我的数组视为 float 组,因此调用了错误的重载方法。

JYTHON:
f([[1, 1.0])

如何强制执行Object[]方法?

最佳答案

我花了相当多的时间才找到答案,所以我决定将问题和答案一起发布。

强制正确重载

Jython 文档告诉我们,为了强制调用正确的重载,您应该在调用之前手动将参数转换为 java 对象:

from java.lang import Byte
foo(Byte(10))

但是这不适用于 java 数组。

强制对数组进行正确的重载

http://www.jython.org/archive/22/userguide.html#java-arrays

可以在 jython 中创建 java 数组。例如下面的代码将在 jython java 中创建 int[] 类型的数组

from jarray import array
array(python_array, 'i')

您可以像这样创建 Object[],并强制 java 调用正确的重载。

from jarray import array
from java.lang import Object
oa = array(python_array, Object)
f(oa)

关于java - 从 jython 调用 java 方法的正确重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329491/

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