2016-03-11 2 views
-2

У меня есть статический массив ArrayList, доступ к которому я могу получить только из класса («Продажа»). В этом ArrayList я хочу добавить элементы того же класса. Как я могу добавить их из конструктора?Добавить элемент в ArrayList «рекурсивно»

Я сделал это таким образом, и он не работает:

public class Sale{ 
    private static ArrayList<Sale> sales; 
    private Buyer buyer; 
    private Item item; 

    public Sale(Buyer buyer, Item item){ 
      this.buyer=buyer; 
      this.item=item; 
      sales.add(this); 
    } 
..... 

Заранее спасибо, я начинаю программировать на Java.

+1

Почему вы хотите даже сделать это рекурсивно. Тебе это не нужно. Поскольку переменная является статической, вы можете легко создать метод и добавить «Collection» там. Я не вижу никакой ценности в этой логике, когда вы можете иметь цикл for и добавлять туда значения, используя статический метод, который ссылается на статическую переменную 'sales'. –

+2

Я бы тоже спросил: почему вы хотите это сделать? В смысле: это пахнет BAD дизайном. Почему класс Sale ... поддерживает список продаж ?! Если вашей «торговой системе» необходимо сохранить списки объектов «Продажи»; то черт возьми; они должны быть в других местах. – GhostCat

+0

Согласие с @ Jägermeister, то есть ПЛОХАЯ практика. –

ответ

3

У вас нет начатоsales ArrayList. Вы можете сделать это, изменив

private static ArrayList<Sale> sales; 

к чему-то вроде

private static ArrayList<Sale> sales = new ArrayList<Sale>(); 

или с помощью diamond operator <> (Java 7+) как

private static ArrayList<Sale> sales = new ArrayList<>(); 

Но я хотел бы предложить вам program to the List interface. Что-то вроде

private static List<Sale> sales = new ArrayList<>(); 

Другой возможный вариант является статический инициализатор, как

private static List<Sale> sales; 
static { 
    sales = new ArrayList<>(); 
} 
+0

Спасибо, это было полезно. – jari

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

  • Нет связанных вопросов^_^