Могу ли я перечислить объекты в перечислении в Java? - PullRequest
0 голосов
/ 30 января 2019

Я хотел бы знать, могу ли я заставить это работать:

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 голосов
/ 30 января 2019

enum s синтаксически действуют как обычные классы, поэтому вы можете иметь поля, методы и конструкторы.

Разница в том, что вы указываете экземпляры класса во время объявления 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...