[英]How can I store Object in Enum in Java
使用 Spigot-API,在 Minecraft 中,我想检查玩家手中是否拿着特定的物品。 我可以以某种方式从枚举中获取项目作为比较值吗? 我想这样做是因为我有一些带有自定义元数据的特殊项目,我想将它们放在枚举列表中。 这是一种合格的方式吗? 我在枚举中尝试了一些构造函数,但我对枚举也太缺乏经验了。 - 或者什么是存储物品的好方法?
我只想通过以下方式获取项目: Items.NAME;
这会是一个解决方案吗?
public enum Items{
GRANADE (getGranade());
ItemStack item;
Items(ItemStack item) {
this.item = item;
}
private static ItemStack getGranade() {
//some code here
}
}
是的,Spigot API 中有Material Enum ,您可以在 ItemStack 上使用.getType() 来获取它的 Material。 但这不包括元数据。
您可以像这样创建自己的枚举:
public enum SpecialItems(){
ITEM1(new ItemStack(Material.ACACIA_BOAT));
private ItemStack itemStack;
public SpecialItems(ItemStack itemStack){
this.itemStack = itemStack;
}
public ItemStack getItemStack(){
return itemStack;
}
}
你会得到这样的 ItemStack:
SpecialItems.ITEM1.getItemStack();
如果需要,您可以在构造函数中添加其他值。 但我认为这种代码的和平应该可能证明这个概念是如何工作的,否则看看 java 对枚举的解释: Java Explanation 。 Further, the get method should not be static beauce every enumarted thing in your enum is an object (/ an instance of the enum) and without static your method operates on the object. 但是您要使用 get 方法返回的变量只能由 object 访问,因此您不想在此方法中使用 static。
但是在比较枚举和玩家手牌的 ItemStacks 时要小心,因为 ItemStack 包括 Items 的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.