我发现在https://chaquo.com/chaquopy/doc/current/python.html#java.cast中缺少如何使用这些非常有用的功能的示例。
我希望看到更多示例,这些示例展示了如何执行一些我难以完成的任务。例如解释是否可以将二维Java数组转换为Python列表,数组或张量。甚至只是了解使用java.cast()的语法。
答案 0 :(得分:4)
在Java中-因此在您链接到的bar()
模块中-“ cast”实际上不会将对象从一种运行时类型转换为另一种。 1 相反,它只是将 expression 从一种 static 类型转换为另一种类型;并且只有当对象的运行时类型已经是 或该静态类型或其子类型,或者是java
(null
)时,它才有效。
这就是None
文档说“该对象必须可分配给给定类或java.cast
(代表Java None
)的原因,否则将引发null
。”
因此,您不能使用TypeError
来完成您提到的任何任务。 Java数组不是Python列表,也不是Python数组,也不是Python张量,因此您不能仅仅将其“转换”为一个。
相关文档说:“该类必须是由java.cast
或jclass
创建的,或者是类或数组的JNI类型签名。”因此,甚至无法表达“广播到Python列表”的想法。
1。注意:Java实际上有两种“广播”:除了我在这里谈论的对象的广播外,还有一种用于数字基元的广播,例如jarray
是((int) 3.5)
。那确实可以进行值转换,但它仅适用于3
,byte
,short
,int
,long
,{{ 1}}和char
。