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;
}
我有上面的角色枚举,我需要更改它,这样每个角色不再有一个项目,而是有一个项目列表。我该怎么做?
我已经为每个字符创建了 ArrayList,但我不知道如何将它们作为参数传递给枚举字符。
最佳答案
而不是使用 List<Item>
,您可以拥有可变数量 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)
关于java - 将列表作为参数传递给枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49374525/