这可能是基本的Java程序的方法,但是我是新来的语言,所以请原谅我扩展接口
我想延长的LivingEntity使得SetCustomName方法,除了它是正常的步骤,它也会抛出一个自定义事件/异常。
我试图做到这一点会导致关于抽象的错误,并且不能拥有正文。
另外,我不能说这是一个类还是一个接口,这意味着我不确定是否应该使用extends或implements。
最后,我正在寻找添加此功能,而不是创建一个新的对象。
你能告诉我,如果这是可能的/引导我在正确的方向吗?非常感谢你的帮助。
这可能是基本的Java程序的方法,但是我是新来的语言,所以请原谅我扩展接口
我想延长的LivingEntity使得SetCustomName方法,除了它是正常的步骤,它也会抛出一个自定义事件/异常。
我试图做到这一点会导致关于抽象的错误,并且不能拥有正文。
另外,我不能说这是一个类还是一个接口,这意味着我不确定是否应该使用extends或implements。
最后,我正在寻找添加此功能,而不是创建一个新的对象。
你能告诉我,如果这是可能的/引导我在正确的方向吗?非常感谢你的帮助。
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
}
}
和实例化类代替。
据我所知,我不能总是调用CraftLivingEntity。此外,即使有可能,我相信这会彻底打破我的世界的一切:) – Drazisil
我对minecraft或bukkit一无所知,因此您需要其他人来帮助解决这个问题。 :S –
看了你的文件,你从GitHub给..
LivingEntity是一个接口,所以你必须落实到另一个类,因为它是不允许的方法来进行定义。
只要按照艾默生的重写方法,因为它是正确的。将您的自定义代码放在super.setCustomName(name);的调用下。
一个'Interface'不能有一个“body” - 它是一个接口,用于将某些东西抽象为一个更“通用”的对象。你需要创建一个''''来实现你的''interface'',然后这个类需要实现这个方法的主体。 最后:寻找一个文件的签名时,你要么看到'名称或'class'前interface' - 这会告诉你它是否是一个接口或类... – Darwind
@Darwind于是我找对于类公共类PetGuardLivingEntity扩展CraftLivingEntity实现LivingEntity? – Drazisil
是的,这绝对是一个解决方案,然后实现(实际上'覆盖')'CraftLivingEntity'的'setCustomName'方法创建你自己实现的方法。 **编辑:**极度喜欢@Emerson Farrugia的回答:-) – Darwind