2016-04-21 1 views
1

Возможно ли инициализировать массив из двух массивов ArrayLists в качестве поля класса в Java?Java: Инициализировать массив из двух массивов в одной строке

Теперь у меня есть следующее. В декларации полей:

public ArrayList someArray[] = new ArrayList[2]; 

и позже в одном из методов фактического присвоения:

someArray[0] = new ArrayList<String>(); 
someArray[1] = new ArrayList<String>(); 
+0

Используйте 'for' петлю. – Satya

+0

Да, это можно сделать! Ваш код кажется правильным. Массивы содержат только ссылки на объекты внутри них, поэтому сами объекты могут быть любыми –

ответ

3

Это может быть сделано:

public ArrayList<String[]>[] 
    someArray = new ArrayList[] {new ArrayList<String[]>(),new ArrayList<String[]>()}; 

Edited после очищения от ОП.

+0

По какой-то причине это не работает. – TranslucentCloud

+0

@TranslucentCloud Что не работает? Обратите внимание, что это 'new ArrayList []', а не 'new ArrayList []', поскольку вы не можете создать экземпляр массива общего типа, но лучше всего использовать тип переменной. – Eran

+0

Если я прав, это потому, что вы не можете создать массив типизированных объектов. Здесь вы пытаетесь выполнить 'ArrayList []' (в объявлении). Его нужно свести к 'ArrayList []' для работы, как в ответе [Manu AG] (http://stackoverflow.com/a/36761798/1734119). В этом случае потерянный общий параметр всегда беспокоил меня. – Chop

3

Попробуйте это:

public ArrayList[] arrayOfArrayLists = new ArrayList[]{new ArrayList<String>() , new ArrayList<String>()}; 
+0

Это работает. Благодарю. – TranslucentCloud

+1

Использование типов raw настоятельно не рекомендуется, как указано в JLS - «Использование типов raw допускается только в качестве уступки совместимости устаревшего кода. Использование необработанных типов в коде, написанном после введения дженериков в язык программирования Java, настоятельно не рекомендуется.Возможно, что будущие версии языка программирования Java будут запрещать использование исходных типов. ' – Eran