java - 将列表作为参数传递给枚举

标签 java enums

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/

相关文章:

java - 从C++到Java的转换(在java中返回多个值)

java - PhoneStateListener onSignalStrengthsChanged ArrayList 内的平均 ASU 值

java - Hashmap 和 EnumMap 的不同通用类型删除行为

c# - 列出标志 Enum 中的所有位名称

c# - 在 switch 语句中我们可以在 C# 中使用枚举吗

java - 从 Gson 获取哈希表

java - 从MapReduce导入数据到HBase(TableOutputFormat错误)

java - 使用 java 的 KeyPairGenerator 的 openssl 等效项是什么?

c# - 如何使用自定义 WPF 控件上的依赖属性处理计算值

C# 创建一个由多个类使用的枚举的最佳方法是什么?