从jython调用java方法的右重载

时间:2014-01-24 09:53:28

标签: java python jython

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

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

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

JYTHON:
f([[1, 1.0]) 

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

1 个答案:

答案 0 :(得分:2)

我花了很多时间才发现,所以我决定将问题和答案一起发布。

强制正确过载

Jython文档告诉我们为了强制调用右重载,你应该在调用之前手动将参数传递给java对象:

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

但是这对java数组不起作用。

强制数组

的正确重载

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

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

的jython java数组中创建
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)