想要将对象表添加到数组列表中

时间:2016-11-25 11:04:44

标签: java

正如我在主题中所说,但是当我尝试设置一个新对象时,旧对象看起来与最后一个对象相同:

 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;

}

以下是编译后的内容:

2000maynullnullnullnullnullnullnullnull

2000maynullnullnullnullnullnullnullnull

2000maynullnullnullnullnullnullnullnull

而不是: 1900januarynullnullnullnullnullnullnullnull

1600septembernullnullnullnullnullnullnullnull

2000maynullnullnullnullnullnullnullnull

2 个答案:

答案 0 :(得分:4)

static

中的所有字段中删除Booking

答案 1 :(得分:2)

您在static课程中使用Booking个变量,因此所有实例都有公共字段yearmonth等等。

使字段静态就像将它附加到整个类上下文而不是实例。

效果是最后一次修改(设置可能2000 )正在修改结果中的所有实例

您应该使这些字段非静态,然后实例将具有自己的值

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

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

另请查看reference以了解static关键字的使用情况。你肯定滥用它。