我正在使用java库,它在我使用的类中重载了方法。
JAVA:
void f(float[]);
void f(Object[]);
现在我从jython调用这个类,我想调用Object []重载。问题是python将我的数组视为浮点数组,因此调用了错误的重载方法。
JYTHON:
f([[1, 1.0])
如何强制执行Object []方法?
答案 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)