java - 向现有 java 对象添加方法和值

标签 java class object methods

我正在尝试添加一个函数,将唯一的 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();

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

最佳答案

您在运行时收到 ClassCastException ,因为您尝试强制转换不是 UniqueItem 类型的项目

此外,延长类(class)也不会帮助你。相反,在 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;
    }
}

关于java - 向现有 java 对象添加方法和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33718699/

相关文章:

javascript - 如何在 javascript 对象上进行匹配和替换

java - Itext 和 PngImage

java - 什么是 java.net.SocketTimeoutException : Failed to receive close ack from remote connection?

java - Spring Maven 和 Tomcat 的 Hibernate 问题

Python 字符串到其他类

c++ - 在 C++ 中重新分配堆栈上的对象

java - 需要数组(列表?),但 int 发现错误

c++ - 具有多种类型的类数组?如何访问数组中的一种类型?

C++ | DLL/EXE - 如何从导出类中调用另一个类方法?

c# - 如何在 C# 中返回对不可修改对象的引用