我发现在https://chaquo.com/chaquopy/doc/current/python.html#java.cast中缺乏如何使用这些非常有用的功能的示例。
我希望有更多的例子来展示如何执行我一直在努力执行的一些任务。例如解释是否可以将二维 Java 数组转换为 Python 列表、数组或张量。甚至只是了解使用 java.cast() 的语法是什么。
我发现在https://chaquo.com/chaquopy/doc/current/python.html#java.cast中缺乏如何使用这些非常有用的功能的示例。
我希望有更多的例子来展示如何执行我一直在努力执行的一些任务。例如解释是否可以将二维 Java 数组转换为 Python 列表、数组或张量。甚至只是了解使用 java.cast() 的语法是什么。
在 Java 中——因此在java
您链接到的模块中——“强制转换”实际上并不会将对象从一种运行时类型转换为另一种。1相反,它只是将表达式从一种静态类型转换为另一种;并且它仅在对象的运行时类型已经是该静态类型或其子类型或null
( None
) 时才有效。
这就是为什么java.cast
文档说“该对象必须可以分配给给定的类,或者None
(代表 Java null
),否则TypeError
将被引发。”
所以你不能java.cast
用来做你提到的任何任务。Java 数组不是 Python 列表,不是 Python 数组,也不是 Python 张量,因此您不能只是将其“转换”为一个。
相关地,文档说“该类必须是由jclass
or创建的jarray
,或者是类或数组的 JNI 类型签名。” 因此,甚至无法表达“强制转换为 Python 列表”的想法。
1. 注意:Java 实际上有两种“强制转换”:除了我在这里讨论的对象之外,还有一种用于数字原语,其中(例如)((int) 3.5)
是3
. 那一个确实做了一个值转换,但它只适用于七种数字类型byte
,short
, int
, long
, char
,float
和double
。