В Java - и, следовательно, в модуле java
, на который вы ссылаетесь - "приведение" фактически не преобразует объект из одного типа времени выполнения в другой. 1 Скорее, оно просто конвертирует выражение от одного статического типа к другому; и это работает только в том случае, если тип времени выполнения объекта уже равен либо этому статическому типу, либо его подтипу, либо null
(None
).
Вот почему документация java.cast
гласит: «Объект должен быть назначен данному классу, или None
(представляющий Java null
), в противном случае TypeError
будет вызван».
Таким образом, вы не можете использовать java.cast
для выполнения любой из упомянутых вами задач. Массив Java не является списком Python, не является массивом Python и не является тензором Python, поэтому вы не можете просто «привести» его к единице.
Соответственно, в документации говорится, что «класс должен быть классом, созданным jclass
или jarray
, или сигнатурой типа JNI для класса или массива». Так что невозможно даже выразить идею «приведение к списку Python».
1. Примечание: в действительности Java имеет два вида «приведения»: в дополнение к одному для объектов, о которых я здесь говорю, есть еще один для числовых примитивов, где (например) ((int) 3.5)
равно 3
. Этот действительно выполняет преобразование значений, но он применяется только к семи числовым типам byte
, short
, int
, long
, char
, float
и double
.