我有一篇描述课程结构的文章 enum static variable reference between java但是当我开始测试时,我遇到了一个微不足道的错误,我创建了ArrayList但是调试语句告诉我类对象是创建的新列表项或构造函数的默认值。
@Test
public GoodsTest()
clearProductMaps();
Goods item = new Goods();
calendar.set(Calendar.MONTH, Calendar.JULY);
calendar.set(Calendar.DAY_OF_MONTH, 21);
calendar.set(Calendar.YEAR, 2016);
date = calendar.getTime();
item.setName("FirstItem_A");
item.setPrice(4.10);
item.setStatus(Library.STATUSES.US);
item.setDate(date);
actualGoods.add(0,item);
item = new Goods();
item.setProductName("FirstItem_A");
item.setPrice(3.70);
item.setStatus(Library.STATUSES.ME);
calendar.set(Calendar.MONTH, Calendar.AUGUST);
date = calendar.getTime();
item.setDate(date);
actualGoods.add(item);
System.out.println("debug " + actualGoods.get(0).getStatus());
}
我的clearProductMaps只是要求List为空以进行测试。
print语句是:debug ME 当我被期望的声明是:debug US
答案 0 :(得分:1)
显然setStatus
两个Good
的{{1}}似乎写入同一个字段。所以这个字段是static
。静态字段是类对象Good的字段。
当你谈到枚举时,每个枚举常量也是一个静态的全局单例。
enum Status {
SLEEPY,
ENERGETIC;
public int coffee;
}
现在两个对象各有一个coffee
。分配它对所有SLEEPY或ENERGETIC事件都有效。这种混淆似乎与Library.STATUSES.ME/US。