首页 > 解决方案 > 使用 2D 双数组字面量初始化 Java Object 数组元素

问题描述

对于某个 API [1],数据数组必须作为 JavaObject数组的元素传递(每个数组一个这样的元素)。以下工作正常,AInDataAPI 接受 2D 双精度数组作为第一个参数(并且只有 1 个参数):

double[][] AInData = {{1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}};
Object[] arObj = { AInData };

由于浮点文字默认为double,我想我可以不用中间变量AInData

Object[] arObj = { {{1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}} };

这导致了以下错误:

illegal initializer for Object
Object[] arObj = { {{1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}} };
                   ^
illegal initializer for <none>
Object[] arObj = { {{1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}} };
                    ^
illegal initializer for <none>
Object[] arObj = { {{1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}} };
                                     ^

为什么我不能废除AInData

如果字面量确实默认为double,则在AInData初始化时没有强制转换。

笔记:

[1] Matlab 接口

标签: java

解决方案


其实你可以

Object [] arObj = new double [][][] {{{1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}} };

推荐阅读