如何使用 java.cast

How to Use java.cast

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

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

的语法是什么

在 Java 中 — 因此在您 link 到的 java 模块中 — "cast" 实际上不会将对象从 runtime-type 到另一个。1 相反,它只是将 expression 从一种 static 类型转换为另一种类型;并且它仅在对象的 runtime-type 已经 静态类型或其子类型或 null (None) 时才有效。

这就是 java.cast 文档说 "The object must either be assignable to the given class, or None (representing Java null), otherwise TypeError will be raised."

的原因

所以您不能使用 java.cast 来完成您提到的任何任务。 Java 数组不是 Python 列表,不是 Python 数组,也不是 Python 张量,所以你不能只是 "cast" 它是一个。

相关地,文档说 "The class must be one created by jclass or jarray, or a JNI type signature for a class or array." 所以甚至没有办法表达 "cast to a Python list" 的想法。


1。注意:Java 实际上有两种 "casts":除了我在这里谈论的对象之外,还有一种是数字基元,其中(例如)((int) 3.5)3。那个确实做了值转换,但它只适用于七种数字类型byteshortintlongcharfloat, 和 double.