如何使用java.cast

时间:2019-06-18 15:55:10

标签: java python chaquopy

我发现在https://chaquo.com/chaquopy/doc/current/python.html#java.cast中缺少如何使用这些非常有用的功能的示例。

我希望看到更多示例,这些示例展示了如何执行一些我难以完成的任务。例如解释是否可以将二维Java数组转换为Python列表,数组或张量。甚至只是了解使用java.cast()的语法。

1 个答案:

答案 0 :(得分:4)

在Java中-因此在您链接到的bar()模块中-“ cast”实际上不会将对象从一种运行时类型转换为另一种。 1 相反,它只是将 expression 从一种 static 类型转换为另一种类型;并且只有当对象的运行时类型已经是 或该静态类型或其子类型,或者是javanull)时,它才有效。

这就是None文档说“该对象必须可分配给给定类或java.cast(代表Java None)的原因,否则将引发null 。”

因此,您不能使用TypeError来完成您提到的任何任务。 Java数组不是Python列表,也不是Python数组,也不是Python张量,因此您不能仅仅将其“转换”为一个。

相关文档说:“该类必须是由java.castjclass创建的,或者是类或数组的JNI类型签名。”因此,甚至无法表达“广播到Python列表”的想法。


1。注意:Java实际上有两种“广播”:除了我在这里谈论的对象的广播外,还有一种用于数字基元的广播,例如jarray((int) 3.5) 。那确实可以进行值转换,但它仅适用于3byteshortintlong,{{ 1}}和char