2

Может ли кто-нибудь сказать мне, как правильно создать массив-аррайалист?!Неверное преобразование Java arraylist

.\File.java:5: warning: [unchecked] unchecked conversion 
     ArrayList<myObjectType> myParkingLotArray[] = new ArrayList[3]; 
               ^
    required: ArrayList<Vehicle>[] 
    found: ArrayList[] 
1 warning 

Я хочу создать arry (или любое другое решение), в котором хранятся 3 arraylists. Было бы неплохо узнать, как добавить объекты к арриллистам.

ParentArray

  1. ChildArrayList1
  2. ChildArrayList2
  3. ChildArrayList3

Im счастливым для любого Помощь

РЕШЕНИЕ:

public class myClass { 
    ArrayList<myObjectType>[] myArryName= new ArrayList[3]; 

    public void addLists() { 
    myArryName[0] = new ArrayList<myObjectType>(); 
    myArryName[1] = new ArrayList<myObjectType>(); 
    myArryName[2] = new ArrayList<myObjectType>(); 
    } 
} 

Предупреждение можно игнорировать или подавлять.

ответ

6

Вы не можете создать массив классов, которые используют общие типы - см. here!

И об этом сообщении об ошибке нет. Компилятор говорит вам: это невозможно!

Вместо этого - просто оставайтесь с один концепция. Нет смысла смешивать массивы и списки в любом случае. Просто пойти на

А потом

List<Vehicle> someChild = new ArrayList<>(); 

Чтобы, наконец, сделать что-то вроде

parents.add(someChild); 
0

Вы можете сделать это с литой

ArrayList<myObjectType>[] myParkingLotArray = (ArrayList<myObjectType>[]) new ArrayList[3]; 

Однако, я согласен с GhostCat вы должны попытаться использовать массивы или li но не смешивать их. a List<List<myObjectype>> было бы лучше.

+0

'ArrayList [] myParkingLotArray = новый ArrayList [3];' это работает?! – 2vkIYKaT4mNOMe0uRjtsoT5AF

+0

@ 2vkIYKaT4mNOMe0uRjtsoT5AF вы можете подавить предупреждение с помощью '@SuppressWarning (« checked »)' –

+0

@ 2vkIYKaT4mNOMe0uRjtsoT5AF true, хотя у вас больше нет общего типа. –

0

Вы не можете создавать массивы параметризованных типов.

Что вы можете сделать insteade следующий:

List [] arrayOfLists = new ArrayList[10]; 
arrayOfLists[0] = new ArrayList<Vehicle>(); 

но вы не можете быть уверены, что все списки будут Список того же типа.

В противном случае вы можете использовать просто список списков таким образом:

List<List<Vehicle>> listOfLists = new ArrayList<>(); 
List<Vehicle> list = new ArrayList<>(); 
listOfLists.add(list); 
Смежные вопросы