首页 > 解决方案 > 我可以在 Java 的枚举中列出对象吗?

问题描述

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

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() 方法)

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

提前致谢!

标签: javaoopenums

解决方案


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

不同之处在于您在枚举声明期间指定了类的实例。这些实例由 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);
}

推荐阅读