您好我有关于pircbot的问题。我试图使用发送消息方法,但我有一个错误,我很困惑。
这是我的代码
import org.jibble.pircbot.PircBot;
public class sendMessage extends PircBot {
public sendMessage() {
this.setName("user");
}
public static void main(String[] args) throws Exception {
sendMessage bot = new sendMessage();
bot.setVerbose(true);
bot.connect("irc.twitch.tv", 6667, "oauth:code");
bot.joinChannel("#channel");
public void sendMessage(String target, String message) {
sendMessage(target, "hello");
}
}
它表示不能超越pircbot的最终方法。我不明白什么是错的。谁能帮助我理解为什么我会这样做?
答案 0 :(得分:0)
声明为final
的方法意味着无法覆盖它。因此,无论您扩展PircBot
多少,都无法改变已提供的方法。有关final
的详细信息,请参阅this教程。
不要试图扩展类,而是考虑使用组合。
此外,您似乎只想使用PircBot
,那么为什么不按照提供的方式使用它呢?
PircBot bot = new PircBot();
bot.setName("user");
bot.setVerbose(true);
bot.connect("irc.twitch.tv", 6667, "oauth:code");
bot.joinChannel("#channel");
bot.sendMessage(target, message);
答案 1 :(得分:0)
此方法“sendMessage”:正在尝试覆盖其中一个PircBot Super Class,并且是最终的。您无法覆盖最终方法。看看Class PircBot Doc.
此外,您应该考虑将您的类“sendMessage”的名称更改为另一个,不要混淆构造函数和方法(等于Super类)。
此外,您的班级名称应采用良好做法,第一个字母为大写。 这是一个例子:
public class MyBot extends PircBot {// changed here
public MyBot() { // changed here
this.setName("user");
}
public static void main(String[] args) throws Exception {
MyBot bot = new MyBot(); // changed here
bot.setVerbose(true);
bot.connect("irc.twitch.tv", 6667, "oauth:code");
bot.joinChannel("#channel");
//changed here
public void sendMyMessage(String target) {
sendMessage(target, "hello");
}
}
答案 2 :(得分:0)
sendMessage()
中的 class PircBot
确实是final
。
它有以下签名:
public final void sendMessage(String target, String message)
根本不需要覆盖它。您可以在代码中使用它。
bot.sendMessage(target, "hello");
您仍然需要提供target
字符串,其定义如下
要发送到的频道或用户姓名的名称。