错误:类不是抽象的,不会覆盖抽象方法

bbr*_*no5 1 java plugins minecraft bukkit

好吧,我正在尝试为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
Run Code Online (Sandbox Code Playgroud)

文件的各个部分是错误(我的意思):

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);
    }
Run Code Online (Sandbox Code Playgroud)

还有这个:

public void sendTitle(String string, String string1) {
    baseObject.sendTitle(string, string1);
}
Run Code Online (Sandbox Code Playgroud)

该插件不是我的,但我需要使用正确版本的插件进行编译.问题是我不太了解java来解决这个错误.谁能帮我?

Cha*_*bia 5

如果您想了解这个概念,那么请阅读完整的答案,然后转到最后并阅读解决方案的块引用.

java中的接口顾名思义就是一个接口.如果我们专门从事java的观点.接口是声明但未实现的功能的类.所以当其他一些类实现接口时,该类必须实现接口的所有功能,并且还要使用自己的函数.

例如

这是java中的一个接口

public interface Animal {
   public void eat();
   public void travel();
}
Run Code Online (Sandbox Code Playgroud)

这是一个实现它的类

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;
   }
}
Run Code Online (Sandbox Code Playgroud)

当一个类实现一个接口时,你应该记住的唯一规则就是在接口中实现所有声明的函数.

在您的代码中,您已经实现了sendMessagesendRawMessage.现在要删除错误,你只需要实现'sendTitle',如错误中所示.