【问题标题】:Adding methods and values to existing java object向现有 java 对象添加方法和值
【发布时间】:2015-11-15 10:29:36
【问题描述】:

我正在尝试添加一个函数,该函数将唯一 id 添加到 java 中的对象。 我有一个返回对象的函数:
ItemStack is=ent.getKiller().getItemInHand();
我创建了一个扩展 ItemStack 类的 java 类,并尝试将对象转换为此类。

import org.bukkit.inventory.ItemStack;
import java.util.UUID;
public class UniqueItem extends ItemStack{
    private String uid="";
    public UniqueItem(){
        uid=UUID.randomUUID().toString();
    }
    public String getUniqueID(){
        return uid;
    }
}

UniqueItem is=(UniqueItem)ent.getKiller().getItemInHand();

它给我一个错误,我不明白为什么。 请帮我解决我的问题或给我一个替代解决方案。
谢谢

【问题讨论】:

  • 错误信息是什么?
  • ItemStack 不是UniqueItem,因此你不能这样转换它。但是UniqueItemItemStack,您可以将UniqueItem 转换为ItemStack

标签: java class object methods


【解决方案1】:

你在运行时得到一个ClassCastException,因为你试图投射一个不是UniqueItem类型的项目

此外,扩展课程对您没有帮助。而是围绕 ItemStack 对象创建一个包装类,该类与对象一起维护唯一 ID。

试试这个:

// wrapper class
public class UniqueItem {
    ItemStack item;
    private String uid="";
    public UniqueItem(ItemStack item) {
        this.item = item;
        uid=UUID.randomUUID().toString();
    }

    public String getUniqueID(){
        return uid;
    }
}

【讨论】:

    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多