我正在尝试添加一个函数,该函数向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;
}
}