2016-11-25 6 views
1

Как я уже говорил в теме, но когда я пытаюсь установить новый объект, старые выглядит так же, как последний:Хотите добавить таблицу объектов в список массива

public class Test { 

private static List<Booking> list = new ArrayList<Booking>(); 
private static List<Booking> lista = new ArrayList<Booking>(); 
public static void main(String[] args) 
{ 
    Booking[] book=new Booking[3]; 
    book[0]=new Booking(); 
    book[1]=new Booking(); 
    book[2]=new Booking(); 
    list.add(0,book[0]); 
    list.add(1,book[1]); 
    list.add(2,book[2]); 
    list.get(0).setYear("1900"); 
    list.get(0).setMonth("january"); 
    list.get(1).setMonth("september"); 
    list.get(1).setYear("1600"); 
    list.get(2).setYear("2000"); 
    list.get(2).setMonth("may"); 
    System.out.println(list.get(0).getBook()); 
    System.out.println(list.get(1).getBook()); 
    System.out.println(list.get(2).getBook()); 
} 

} 

и букинг класс:

public class Booking 
    { 

public static String getMark() 
{ 
    return m; 
} 
public static String getWym() 
{ 
    return w; 
} 
public static String getWyw() 
{ 
    return wyw; 
} 
public static String getImie() 
{ 
    return imie; 
} 
public static String getNaz() 
{ 
    return nazwis; 
} 
public static String getNr() 
{ 
    return nr; 
} 
public void setMark(String m) 
{ 
    this.m=m; 
} 
public void setWym(String w) 
{ 
    this.w=w; 
} 
public void setWyw(String wyw) 
{ 
    this.wyw=wyw; 
} 
public void setImie(String imie) 
{ 
    this.imie=imie; 
} 
public void setNaz(String nazwis) 
{ 
    this.nazwis=nazwis; 
} 
public void setNr(String nr) 
{ 
    this.nr=nr; 
} 
public void setYear(String year) 
{ 
    this.year=year; 
} 
public void setMonth(String month) 
{ 
    this.month=month; 
} 
public void setDay(String day) 
{ 
    this.day=day; 
} 
public void setHour(String hour) 
{ 
    this.hour=hour; 
} 
public static String getYear() 
{ 
    return year; 
} 

public static String getMonth() 
{ 
    return month; 
} 
public static String getDay() 
{ 
    return day; 
} 
public static String getHour() 
{ 
    return hour; 
} 

public String getBook() 
{ 

    String Book=getYear()+getMonth()+getDay()+getHour()+getMark()+getWym()+getWyw()+getImie()+getNaz()+getNr(); 
    return Book; 

} 
private static String year; 
private static String month; 
private static String day; 
private static String hour; 
private static String m; 
private static String w; 
private static String wyw; 
private static String imie; 
private static String nazwis; 
private static String nr; 

}

Вот что я получил после компиляции:

2000maynullnullnullnullnu llnullnullnull

2000maynullnullnullnullnullnullnullnull

2000maynullnullnullnullnullnullnullnull

Вместо: 1900januarynullnullnullnullnullnullnullnull

1600septembernullnullnullnullnullnullnullnull

2000maynullnullnullnullnullnullnullnull

+0

Почему бы вам не использовать конструктор для класса бронирования? – user6904265

ответ

2

Вы ар е с помощью static переменных внутри Booking класса и из-за этого все экземпляры имеют общие поля year, month и т.д ...

Making поле статический, как присоединение его к контексту всего класса не экземпляр.

Эффект является то, что последняя модификация (установка может 2000) модифицирует все экземпляры в результате

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

class Booking { 
    private String year; 
    private String month; 
    private String day; 
    //another fields... 

    public String getYear() { 
     return this.year; 
    } 
    //another methods... 
} 

Также обратите внимание на reference, чтобы понять использование ключевого слова static. Вы определенно злоупотребляете им.

4

удалить static из ваших всех полей в Booking

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