2013-03-26 4 views
1

Здесь я пытаюсь инициализировать массив объектов в Java, но я не могу понять, как инициализировать вложенный массив объектов. Я попытался создать массив объектов со строкой в ​​качестве первого элемента и массив строк в качестве второго элемента.Инициализаторы многомерного массива Java

сообщение об ошибке, что я столкнулся:

Main.java:8: error: illegal initializer for Object 

И код, который произвел эту ошибку было:

import java.util.*; 
import java.lang.*; 

class Main 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     Object[] multiDimensionalObjectArray = {"Hi!", {5, 5}}; 
    } 
} 
+0

Поскольку массив является типом 'Object', я не понимаю, почему это должно быть невозможно создать массив со строкой как его первый объект и его массив как его второй объект. Есть ли способ обойти эту проблему? –

+0

Почему вы не можете создавать классы, основанные на этом. вы можете иметь массив объектов классов –

ответ

5

По какой-то причине, даже если вам не нужен new Object[] перед основной литерал массива, кажется, что он нужен для внутреннего литерала массива:

Object[] multiDimensionalObjectArray = {"Hi!", new Object[] {5, 5}}; 
+0

Это потому, что первый - это инициализатор массива, назначенный переменной типа массива. Вы не можете использовать это внутри этого массива, поскольку компилятор не знает, что он должен быть массивом в этом месте. –

+0

Хорошо, это имеет смысл. – rgettman

2

Вы не создаете многомерный массив. Вы создаете массив, в котором первый элемент представляет собой строку - это не массив, с которого нужно начинать. Конечно, вы можете сделать второй элемент массивом ... какой массив вы хотите? Учитывая, что она содержит два целых числа, может быть, вы хотите, чтобы это было int[]:

Object[] mixedDataArray = { "Hi!", new int[] { 5, 5 } }; 
+0

Он также может быть массивом объектов - это тоже будет актуально, я думаю. –

+0

@AndersonGreen: Да, это было бы правильно. В принципе, мы не можем сказать, какой тип массива вы хотите получить из исходного кода - в чем проблема, с которой работает компилятор. Я должен сказать, что довольно необычно хотеть такой массив в первую очередь ... вы уверены, что более строго типизированная структура данных будет не лучше? –

Смежные вопросы