参数化枚举在另一个枚举中传递

时间:2018-02-15 19:56:19

标签: java enums

我有这两个枚举类,其中 Item 包含带有描述的项目。枚举类字符有四个不同的Character对象:LAURA,SALLY,ANDY和ALEX,每个都用描述和项进行参数化;后者可能为空。

物品

public enum Item
{
    SANDWICH("sandwich"), CRISPS("crisps"), DRINK("drink");

private String description;

Item(String description)
{
this.description = description;

}

public String toString()
{
    return description;
}

}

字符

public enum Character
{
    LAURA("Laura",Item.SANDWICH),SALLY("Sally", Item.CRISPS),ANDY("Andy", Item.DRINK),ALEX("Alex", null);


private String Chardescription;
private Item item;

private Character(String Chardescription)
{
    this.Chardescription= Chardescription;
}

private Character(Item item)
{
    this.item= item;
}
public String toString()
{
    return Chardescription;
}

}

问题在于枚举类字符,当我编译时,我得到错误&#34;没有为Character找到合适的构造函数(java.lang.String.Item)&#34; < / p>

2 个答案:

答案 0 :(得分:2)

任何类的构造函数,不仅仅是Enum,都不应该在每个字段的基础上创建。

创建一个同时获取两个值的构造函数。

private Character(String Chardescription, Item item) {
    this.Chardescription = Chardescription;
    this.item = item;
}

另外,通常的Java命名约定会将其命名为charDescription,而不是Chardescription。此外,最好不要将任何类命名为内置Java类(Character)。

答案 1 :(得分:2)

您必须在构造函数中指定Item参数。

private Character(String Chardescription, Item item) {
        this.Chardescription = Chardescription;
        this.item = item;
}