java - 我可以在 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() 方法)
开头的这段代码给了我错误,但是还有其他方法可以列出这样的对象吗?(不创建新类)
提前致谢!
解决方案
enum
s 在语法上充当常规类,因此您可以拥有字段、方法和构造函数。
不同之处在于您在枚举声明期间指定了类的实例。这些实例由 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);
}
推荐阅读
- java - 反应堆代码中的奇怪 RejectedExecutionException
- javascript - jQuery - 为索引函数使用唯一 id
- grails - 我如何在 grails3 中使用 resultTransformer
- arrays - 火花数据框从数组中选择一个元素,但该值不是正确的
- python - 从一个数据框的列中获取唯一值并使用它来过滤另一个数据框中的行
- java - 如何检测输入文件是否包含某些字段
- xamarin - 我该如何解决,Visual Studio for Mac 中的开发人员帐户密码更改时自动配置失败?
- php - 使用不记名令牌在 Twitter API 中获取用户信息
- android - 如何从自定义对话框获取数据到活动并将该数据传递给 recyclerView
- filter - 与 MINUS 一起使用时,SPARQL 查询中的过滤器不起作用