当前位置: 首页 > 知识库问答 >
问题:

如何在java中创建枚举的对象

朱梓
2023-03-14
public enum Item
{
    // Three Items with descriptions
    GOLD (2, "gold"), SILVER(12, "silver"), BRONZE(5, "bronze");

    private int weight;
    private String description;

    public int getWeight()
    {
       return weight;
    }

    public String toString()
    {
        return description;
    }

}

此处使用的运算符不能用于所使用的值类型。您要么在这里使用了错误的类型,要么使用了错误的运算符

共有1个答案

栾鸣
2023-03-14

你忘了声明构造函数!

public enum Item {

  GOLD(2, "gold"), SILVER(12, "silver"), BRONZE(5, "bronze");     

  private int weight;
  private String description;

  private Item(int weight, String description) {
    this.weight = weight ;
    this.description = description ;
  }

  // rest of code

}

长话短说
在代码中gold(2,“gold”)可以读为gold=new Item(2,“gold”),因此编译器找不到合适的构造函数。

更完整的答案和示例
不要忘记所有东西(嗯,几乎所有东西,有一些像intboolean)这样的原语)都是Java中的对象。因此,枚举的项也是对象,需要用构造函数实例化。
请记住,如果不提供显式构造函数,则存在隐式无参数构造函数。

public enum Test {
  A, B, C;
}

public enum Test2 {
  A, B, C;

  private int value ;

  private Test2(){
    value = 0;
  }
}

public enum Test3 {
  A(1), B(2), C(3);
}

public enum Test4 {
  A, B, C;

  public Test4(int value) {}
}
 类似资料:
  • 问题内容: 我要做什么才能完成此任务?另外,可以说我将其更改为: 我该如何使它符合Decodable? EDit 这是我的完整代码(不起作用) 最终编辑 另外,它将如何处理这样的枚举? 问题答案: 这很简单,只需使用或隐式分配的原始值即可。 被编码到并到 要么 被编码到并到 这是一个简单的示例如何使用它:

  • 问题内容: 当我阅读 Effective Java时 ,作者告诉我,单元素类型是实现单例的最佳方法,因为我们不必考虑复杂的序列化或反射攻击。这意味着我们无法创建使用反射的实例,对吗? 我已经做了一些测试,并在这里上课: 然后我尝试创建一个实例: 如您所知,它不起作用。当我更改关键字来,它的工作原理。我想知道为什么。谢谢。 问题答案: 这是语言内置的。根据Java语言规范(§8.9): 尝试显式实例

  • 问题内容: 在Apple有关与C API进行交互的文档中,他们描述了将带有标记的C样式枚举作为Swift枚举导入的方式。这是有道理的,并且由于Swift中的枚举很容易作为值类型提供,因此很容易看到如何创建我们自己的枚举。 再往下,它说了关于标记C样式的选项: Swift还会导入标有宏的选项。而选项的行为类似于进口枚举,选项还可以支持一些位操作,如,和。在Objective- C中,您表示一个空的选

  • 问题内容: 我无法使用从常量中获取的枚举作为注释中的参数。我收到此编译错误:“注释属性[attribute]的值必须是枚举常量表达式”。 这是枚举代码的简化版本: 对于注释: 和班级: 该错误仅在方法B的“ theEnum = MYENUM_CONSTANT”中显示。字符串和int常量对于编译器是可以的,但Enum常量不是,即使它的值与methodA上的值完全相同。在我看来,这是编译器中缺少的功能

  • 问题内容: 我正在制作绘图应用程序,我想通过枚举引用我的颜色。例如,每次我想要红色时,使用它会更干净,更方便,而不用键入值。但是,Swift的原始值枚举似乎并不接受UIColor作为类型。有没有办法用枚举或类似方法做到这一点? 问题答案: 我这样做(基本上使用结构作为名称空间): 您可以像这样使用它: 因此,您可以在自定义主题中使用红色。

  • 表示枚举的给定数据,例如: 如何使用创建枚举等效于: Timo的ADT库给出了一个如何使用创建类的示例,但它不涵盖枚举:https://github.com/timo/ADT/blob/master/lib/ADT.pm6