您正在查看 "Jython" 分类下的文章
2009-03-13 19:32
比如在Java中有byte [],那么如果需要在Jython中传入这样的参数怎么办呢?可以使用jarray模块。如:
1 2 3 4 5
|
>>> import jarray >>> s = [10, 20] >>> a = jarray.array(s, 'b') >>> a array('b', [10, 20])
|
使用jarray.array就可以生成数组。而且它是一个通用的功能,根据第二个参数的不同,可以生成不同的类型。对于不同的类型,可以使用不同的类型代码,如:
z Boolean
c char
b byte
h short
i int
l long
f float
d double
如果要转换的没有对应的类型代码,可以直接使用类,比如:java.lang.Byte。
不过对于byte,Python中没有分得很细,要么是字符串,要么是整数。而Java中的byte是带符号的,因此,如果你把一个16进制的字符串想转为一个Byte,怎么做?
int('0xff', 16)
这样得到一个整数。然后:
java.lang.Byte(int('0xff', 16))
但是直接使用java.lang.Byte对象来生成数组是不行的,如:
1 2 3 4 5
|
>>> import java >>> jarray.array([java.lang.Byte(255)], 'b') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Type not compatible with array type
|
可以看到类型不对。这时可以使用java.lang.Byte的intValue()就可以了,如:
1 2 3
|
>>> import java >>> jarray.array([java.lang.Byte(255).intValue()], 'b') array('b', [-1])
|
BTW: 刚看到3月9日,Jython 2.5b3发布了,修复了我以前说的关于from xxx import *的Bug。 |
|
|