error: Class is not abstract and does not override abstract method
error: Class is not abstract and does not override abstract method
好吧,我正在尝试为 Bukkit/Spigot 编译一个 java 插件,但出现以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project Websend: Compilation failure
[ERROR] /home/bruno/spigot/Websend/src/main/java/com/github/websend/WebsendPlayerCommandSender.java:[24,7] error: WebsendPlayerCommandSender is not abstract and does not override abstract method sendTitle(String,String,int,int,int) in Player
文件的各个部分哪里有错误(我是说):
public class WebsendPlayerCommandSender implements Player {
/* This class allows tapping into command output from plugins
* if the output is sent through the commandsender.
* Note to anyone having compilation problems: Compile against Bukkit, not CraftBukkit.
*
* Tap this method(1.6.4): sendRawMessage, sendMessage(String), sendMessage(String[])
*/
private final Player baseObject;
private final Plugin commandTargetPlugin;
public WebsendPlayerCommandSender(Player baseObject, Plugin commandTargetPlugin) {
this.baseObject = baseObject;
this.commandTargetPlugin = commandTargetPlugin;
}
@Override
public void sendMessage(java.lang.String param0) {
PluginOutputManager.handleLogRecord(commandTargetPlugin, new LogRecord(Level.INFO, param0));
baseObject.sendMessage(param0);
}
@Override
public void sendMessage(java.lang.String[] param0) {
for (String str : param0) {
PluginOutputManager.handleLogRecord(commandTargetPlugin, new LogRecord(Level.INFO, str));
}
baseObject.sendMessage(param0);
}
@Override
public void sendRawMessage(java.lang.String param0) {
PluginOutputManager.handleLogRecord(commandTargetPlugin, new LogRecord(Level.INFO, param0));
baseObject.sendRawMessage(param0);
}
还有这个:
public void sendTitle(String string, String string1) {
baseObject.sendTitle(string, string1);
}
插件不是我的,但我需要使用正确版本的 spigot 进行编译。问题是我不太了解 java 来解决这个错误。谁能帮帮我?
Player 是一个接口,其中包含已定义但未实现的方法。当
WebsendPlayerCommandSender implements Player
它基本上是签署了一份合同,说它将实现 Player 没有实现的这些方法。似乎 WebsendPlayerCommandSender 已经覆盖了 Player 中的 sendMessage 和 sendRawMessage 方法。但是,Player 中有一个名为 send Title 的方法,如下所示
sendTitle(String string, String string1, int num1, int num2, int num3)
并且WebsendPlayerCommandSender 没有覆盖这个方法。所以你必须创建这样的东西:
@Override
public void sendTitle(String string, String string1, int num1, int num2, int num3){
//Define behavior here
}
如果您想理解这个概念,请阅读整个答案,否则请阅读末尾并阅读解决方案的块引用。
java中的接口顾名思义就是一个接口。如果我们专门从 java 的角度来看。接口是 classes,具有已声明但未实现的功能。
因此,当其他 class 实现该接口时, class 必须实现接口的所有功能以及它自己的功能。
例如
这是java
中的一个界面
public interface Animal {
public void eat();
public void travel();
}
这是一个class实现
public class MammalInt implements Animal {
@Override
public void eat() {
System.out.println("Mammal eats");
}
@Override
public void travel() {
System.out.println("Mammal travels");
}
public int noOfLegs() {
return 0;
}
}
当 class 实现接口时,您应该记住的唯一规则是它必须实现接口中声明的所有函数。
In your code you have already implemented sendMessage
and sendRawMessage
. Now to remove the error you only have to implement 'sendTitle' as shown in the error.
好吧,我正在尝试为 Bukkit/Spigot 编译一个 java 插件,但出现以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project Websend: Compilation failure
[ERROR] /home/bruno/spigot/Websend/src/main/java/com/github/websend/WebsendPlayerCommandSender.java:[24,7] error: WebsendPlayerCommandSender is not abstract and does not override abstract method sendTitle(String,String,int,int,int) in Player
文件的各个部分哪里有错误(我是说):
public class WebsendPlayerCommandSender implements Player {
/* This class allows tapping into command output from plugins
* if the output is sent through the commandsender.
* Note to anyone having compilation problems: Compile against Bukkit, not CraftBukkit.
*
* Tap this method(1.6.4): sendRawMessage, sendMessage(String), sendMessage(String[])
*/
private final Player baseObject;
private final Plugin commandTargetPlugin;
public WebsendPlayerCommandSender(Player baseObject, Plugin commandTargetPlugin) {
this.baseObject = baseObject;
this.commandTargetPlugin = commandTargetPlugin;
}
@Override
public void sendMessage(java.lang.String param0) {
PluginOutputManager.handleLogRecord(commandTargetPlugin, new LogRecord(Level.INFO, param0));
baseObject.sendMessage(param0);
}
@Override
public void sendMessage(java.lang.String[] param0) {
for (String str : param0) {
PluginOutputManager.handleLogRecord(commandTargetPlugin, new LogRecord(Level.INFO, str));
}
baseObject.sendMessage(param0);
}
@Override
public void sendRawMessage(java.lang.String param0) {
PluginOutputManager.handleLogRecord(commandTargetPlugin, new LogRecord(Level.INFO, param0));
baseObject.sendRawMessage(param0);
}
还有这个:
public void sendTitle(String string, String string1) {
baseObject.sendTitle(string, string1);
}
插件不是我的,但我需要使用正确版本的 spigot 进行编译。问题是我不太了解 java 来解决这个错误。谁能帮帮我?
Player 是一个接口,其中包含已定义但未实现的方法。当
WebsendPlayerCommandSender implements Player
它基本上是签署了一份合同,说它将实现 Player 没有实现的这些方法。似乎 WebsendPlayerCommandSender 已经覆盖了 Player 中的 sendMessage 和 sendRawMessage 方法。但是,Player 中有一个名为 send Title 的方法,如下所示
sendTitle(String string, String string1, int num1, int num2, int num3)
并且WebsendPlayerCommandSender 没有覆盖这个方法。所以你必须创建这样的东西:
@Override
public void sendTitle(String string, String string1, int num1, int num2, int num3){
//Define behavior here
}
如果您想理解这个概念,请阅读整个答案,否则请阅读末尾并阅读解决方案的块引用。
java中的接口顾名思义就是一个接口。如果我们专门从 java 的角度来看。接口是 classes,具有已声明但未实现的功能。 因此,当其他 class 实现该接口时, class 必须实现接口的所有功能以及它自己的功能。
例如
这是java
中的一个界面public interface Animal {
public void eat();
public void travel();
}
这是一个class实现
public class MammalInt implements Animal {
@Override
public void eat() {
System.out.println("Mammal eats");
}
@Override
public void travel() {
System.out.println("Mammal travels");
}
public int noOfLegs() {
return 0;
}
}
当 class 实现接口时,您应该记住的唯一规则是它必须实现接口中声明的所有函数。
In your code you have already implemented
sendMessage
andsendRawMessage
. Now to remove the error you only have to implement 'sendTitle' as shown in the error.