public enum Character
{
LAURA("Laura", Item.SANDWICH,0.0f), SALLY("Sally", Item.CRISPS,0.1f),
ANDY("Andy", Item.DRINK,0.2f), ALEX("Alex", null,0.3f);
private String description;
private Item item;
private float probability;
ArrayList<Item> itemsLaura = new ArrayList<>();
ArrayList<Item> itemsSally = new ArrayList<>();
ArrayList<Item> itemsAndy = new ArrayList<>();
ArrayList<Item> itemsAlex = new ArrayList<>();
/**
* Constructor initialising description,item and probability.
*/
private Character(String desc, Item it,float moveProbability)
{
itemsLaura.add(Item.SANDWICH);
itemsSally.add(Item.CRISPS);
itemsAndy.add(Item.DRINK);
itemsAlex.add(null);
item = it;
probability =moveProbability;
}
我有上面的字符枚举,我需要更改它,而不是每个字符都有一个项目,他们有一个项目列表。我该怎么做?
我为每个角色创建了ArrayLists,但我不知道如何将它们作为参数传递给枚举角色。
答案 0 :(得分:0)
不是使用List<Item>
,而是使用varargs可以获得可变数量的Item
,但首先应该将moveProbability
交换为第二个参数(因为varargs参数必须是最后一个元素)。你的签名最终会像这样:
private Character(String desc, float moveProbability, Item... items) {
...
}
然后您可以更改:
private Item item;
到
private Item[] items;
并在构造函数中包含以下内容:
this.items = items;
这将允许您的枚举值采用多个Item
s:
LAURA("Laura", 0.0f, Item.SANDWICH, Item.DRINK, Item.CRISPS)