我可以在Java枚举中列出对象吗?

时间:2019-01-30 14:56:00

标签: java oop enums

我想知道我是否可以使它工作:

public enum Items {
    Weapon starterBow = new Weapon("Starter Bow", AttackSpeed.SLOW),
    Weapon advancedBow = new Weapon("Advanced Bow", AttackSpeed.MEDIUM),
    Weapon goldenBow = new Weapon("Golden Bow", AttackSpeed.FAST);
}

我想这样访问它:

Items.starterBow.getName()

(武器具有getName()方法)

开头的这段代码片段给了我错误,但是还有其他方法可以列出这样的对象吗? (无需创建新类)

谢谢!

1 个答案:

答案 0 :(得分:0)

enum在语法上充当常规类,因此您可以具有字段,方法和构造函数。

区别在于您在枚举声明期间指定了类的实例。这些实例是由jvm创建的,不能以其他任何方式创建。

这可能是您想要的:

public enum Items {
  //Fields
  String name;
  AttackSpeed attackSpeed;

  //constructor:
  Items(String name, AttackSpeed attkSpd) {
    this.name = name;
    this.attackSpeed = attkSpd;
  }

  //methods:
  public String getName() {
    return name;
  }

  //listing the instances and calling the constructor:
  StarterBow ("Starter Bow", AttackSpeed.SLOW),
  AdvancedBow ("Advanced Bow", AttackSpeed.MEDIUM),
  GoldenBow ("Golden Bow", AttackSpeed.FAST);
}