我正在尝试添加一个函数,该函数向Java中的对象添加唯一的ID。
我有一个返回一个对象的函数:
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();

它给我带来了一个错误,我不明白为什么。
请帮助我解决问题或提供替代解决方案。
谢谢

最佳答案

在运行时会得到一个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;
    }
}

09-26 04:15