1

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

我希望有更多的例子来展示如何执行我一直在努力执行的一些任务。例如解释是否可以将二维 Java 数组转换为 Python 列表、数组或张量。甚至只是了解使用 java.cast() 的语法是什么。

4

1 回答 1

5

在 Java 中——因此在java您链接到的模块中——“强制转换”实际上并不会将对象从一种运行时类型转换为另一种。1相反,它只是将表达式从一种静态类型转换为另一种;并且它仅在对象的运行时类型已经该静态类型或其子类型或null( None) 时才有效。

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

所以你不能java.cast用来做你提到的任何任务。Java 数组不是 Python 列表,不是 Python 数组,也不是 Python 张量,因此您不能只是将其“转换”为一个。

相关地,文档说“该类必须是由jclassor创建的jarray,或者是类或数组的 JNI 类型签名。” 因此,甚至无法表达“强制转换为 Python 列表”的想法。


1. 注意:Java 实际上有两种“强制转换”:除了我在这里讨论的对象之外,还有一种用于数字原语,其中(例如)((int) 3.5)3. 那一个确实做了一个值转换,但它只适用于七种数字类型byteshort, int, long, char,floatdouble

于 2019-06-18T16:08:56.827 回答