繁体   English   中英

如何在 Java 中的枚举中存储对象

How can I store Object in Enum in Java

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

使用 Spigot-API,在 Minecraft 中,我想检查玩家手中是否拿着特定的物品。 我可以以某种方式从枚举中获取 Item 作为比较值吗? 我想这样做是因为我有一些带有自定义元数据的特殊项目,我想将它们放在枚举列表中。 这是一种合格的方式吗? 我在枚举中尝试了一个构造函数,但我对枚举也太缺乏经验了。 - 或者什么是存放物品的好方法?

我只想通过执行以下Items.NAME;来获取项目: Items.NAME;

这会是一个解决方案吗?

public enum Items{
GRANADE (getGranade());

ItemStack item;
Items(ItemStack item) {
    this.item = item;
}

private static ItemStack getGranade() {
    //some code here
}

}

1 个回复

是的,在 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对枚举的 解释 此外,get 方法不应该是静态的,因为枚举中的每个枚举事物都是一个对象(/枚举的实例),并且如果没有静态,则您的方法对对象进行操作。 但是你想用get方法返回的变量只能被对象访问,因此你不想在这个方法中使用static。

但是在比较枚举和玩家手的 ItemStacks 时要小心,因为 ItemStack 包括 Items 的数量。

1 如何在java中创建枚举对象

我试图定义枚举类“Item”的三个不同对象,权重在0到20之间,并描述每个项目 这是我的代码: 我一直收到这个错误 枚举项中的构造函数项无法应用于给定类型:必需:无参数,找到:int.java.lang.String,reason:实际和形式参数列表的长度不同 也 ...

2015-02-10 16:20:13 2 11690   java
3 如何在Java中从枚举中返回一个对象?

我有许多实现相同接口的类。 所有这些类的对象必须在主类中实例化。 我试图以一种优雅的方式完成这件事(我想通过枚举)。 示例代码: - 现在在上面的例子中,我可以通过一些优雅的方式获得C1类到Ck类的新对象的实例。 或者也可以理解任何其他更好的机制而不是枚举。 ...

4 我可以在Java枚举中列出对象吗?

我想知道我是否可以使它工作: 我想这样访问它: (武器有一个getName()方法) 开头的代码段给了我错误,但是还有其他方法可以列出这样的对象吗? (不创建新类) 提前致谢! ...

6 如何在MySQL中枚举java枚举

我有枚举类角色。 我想将此值存储在表角色的mysql DB中。 表角色 我使用以下代码进行表映射 表用户 但是在Java中,枚举序号从0开始,因此0 = ADMIN,1 = USER,2 = TRAINER,并且当我尝试设置用户Role.ADMIN时,我会收到异 ...

7 如何在JSON中存储枚举

假设我们有一个类User和一个他居住的Country 。 可能的国家/地区数量有限: [{name: "Dark john", country: 0}, {"name": "Sam sung", country: 1}] 假设[Mars, Neptune, Jupiter] 。 ...

8 如何在Realm中存储枚举?

如何在使用Realm时存储Java枚举类? 从他们的文档来看,似乎Realm尚未支持存储枚举: 字段类型 Realm支持以下字段类型: boolean , byte , short , ¯nt , long , float , double , String , Date和byt ...

9 如何在枚举中存储不同的类?

我有一个枚举EnumUtil和几个类ChatUtil,PrefixUtil等。 ChatUtil和PrefixUtil类扩展了Util类。 我需要的是一种将它们存储在枚举中的方法。 例: 我有一个需要前缀的类,因此我将调用Enumutil.PREFIX_UTIL,并且它将返回Pr ...

10 如何在对象类中实现枚举 - Java?

这是我第一次在课堂上使用enum。 我想创建一个Pizza类,以便用户可以创建一个Pizza对象,然后设置大小,获取大小,设置干酪的数量等Pizza()是初始化没有参数的Pizza对象的默认构造函数。 谢谢!! ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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