繁体   English   中英

如何在 Java 的枚举中存储 Object

[英]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.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM