2015-03-20 4 views
0

Я довольно новичок в программировании, и я немного смущен здесь. Я пытаюсь передать заполненного arraylist в другой класс. Вот класс, где я сделать ArrayList:Передача arraylist другому классу

public class inventory 
{  
    private static ArrayList<engineSpecs> list = new ArrayList<engineSpecs>(); 
    public inventory() 
    {   
     //Instantiates objects of constructor engineSpecs 
     engineSpecs astonmartin = new engineSpecs("Aston Martin", "Vanquish", 350000, 11, "Gray", 
            2015, 565, 457, "automatic"); 
     engineSpecs ferrari = new engineSpecs ("Ferrari", "458 Italia", 240000, 13, "Red", 2015, 
             570, 398, "automatic"); 

     //Adds objects into array list 
     list.add(astonmartin); 
     list.add(ferrari); 
    } 
    public static ArrayList<engineSpecs> getList() 
    { 
     return list; 
    } 
} 

А вот это класс я пытаюсь передать ArrayList в:

public class Main 
{ 
    public static void main (String[] args) 
    {   
    inventory inventory = new inventory(); 
    System.out.println (inventory.getList()); 
    } 
} 

Когда я запускаю главный класс, он просто печатает пустой ArrayList. Любая помощь очень ценится!

+0

Почему 'private static ArrayList list' private? –

+1

Я не могу воспроизвести вашу проблему. Я получил список с данными. – Masudul

+0

И не вижу проблемы, извините. Также следует признать, что плохой стиль объявляет ваш статический список, но выполняет инициализацию в конструкторе. Удалите статические ключевые слова из вашего класса инвентаря, который также будет работать. –

ответ

0

По умолчанию при печати списка он будет отображать его следующим образом

[имя класса элемента списка @ HashCode]

Если вы хотите список, который будет отображаться определенным образом вам необходимо переопределить метод toString класса, который добавлен в список. В вашем случае класс enginespecs

Добавление простого ToString в классе engineSpecs, как показано ниже даст вам желаемый результат

public String toString(){ 
return name; 
} 

ВЫВОД

[Aston Martin, Ferrari]

ПРИМЕЧАНИЕ

В именах классов java необходимо начинать с капитала. И параметр должен быть объявлен статическим, только если вы хотите использовать его на уровне класса

0

Результаты не будут пустыми или пустыми. У него также будут записи. Если вы переопределите toString для класса «engineSpecs», вы увидите записи списка.

0

Попробуйте декалировать его как переменную экземпляра вместо статического. и удалить статический способ доступа к списку.

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