在接口上扩展方法

时间:2014-03-27 18:04:27

标签: java minecraft bukkit

这可能是基本的java,但我是该语言的新手,所以请原谅我

我想扩展SetCustomNameLivingEntity方法,这样除了正常的步骤之外,它还会抛出自定义事件/异常。

我尝试这样做会导致抽象错误,并且无法生成。

此外,我无法判断这是一个类还是一个接口,这意味着我不确定是否应该使用扩展或实现。

最后,我想要添加此功能,而不是创建一个新对象。

你能告诉我这是否可行/引导我走向正确的方向?非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

看看你从GitHub提供的文件..

LivingEntity是一个界面,所以你必须将它实现到另一个类中,因为它的方法是不允许定义的。

请遵循爱默生的重写方法,因为它是正确的。将自定义代码放在对super.setCustomName(name);。

的调用下

答案 1 :(得分:1)

LivingEntity是一个接口,CraftLivingEntity是一个类。您只能扩展一个类,实现一个接口。界面本身没有"正常的步骤"。

如果您可以控制是否CraftLivingEntity或其他类被实例化,请按以下方式扩展CLE

public class MyCraftLivingEntity extends CraftLivingEntity {

    @Override // just a marker annotation to help catch inheritance issues
    public void setCustomName(String name) {

         super.setCustomName(name);

         // do whatever else
    }
}

并改为实例化你的课程。