将列表作为参数传递给枚举类型

3
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;
}

我有一个名为Character的枚举类型,现在我需要将每个字符拥有的Item从单个对象改为一个对象列表。请问应该如何实现?

我已经为每个角色创建了ArrayLists,但是我不知道如何将它们作为参数传递给Character枚举类型。


1
使用 Arrays.asList() - shmosel
我该如何使用Arrays.asList()? - super95
阅读文档。 - shmosel
我仍然不理解它的意图是什么。 - super95
这只是一种初始化列表的简化方式。 - shmosel
1个回答

2

如果不使用List<Item>,可以通过使用可变参数(varargs)来拥有不确定数量的Item,但首先应该将moveProbability交换为第二个参数(因为varargs参数必须是最后一个元素)。你的签名最终会像这样:

private Character(String desc, float moveProbability, Item... items) {
    ...
}

您可以更改:


private Item item;

为了

private Item[] items;

并在你的构造函数中包含以下内容:

this.items = items;

这将允许您的枚举值使用多个Item
LAURA("Laura", 0.0f, Item.SANDWICH, Item.DRINK, Item.CRISPS)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接