我正在尝试创建一个使用scheduleSyncRepeatingTask
的插件,并通过调用方法创建任务。问题是试图从不同的类中调用它。
当我尝试调用该方法时,它会说该方法需要为static
。因此,我制作方法static
,然后scheduleSyncRepeatingTask
中的第一个参数表示它不能在static
上下文中使用。
我的方法
public static void newCountdown() {
Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
public void run() {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
player.sendMessage("Hey");
}
}
}, 0, 20);
}
我是Java的新手,static
变量仍然是我试图理解的东西,所以如果有人可以将我链接到我可以阅读的地方,或者即使是视频也会很棒。
至于问题,如果有人有解决方案,那么任何帮助将不胜感激。
答案 0 :(得分:3)
结帐this post,快速轻松地解释static
关键字。
为了避免错误说该方法需要是静态的,请在实例而不是类上调用该方法。
像这样:
Foo f = new Foo();
f.newCountdown();
而不是:
Foo.newCountdown();
答案 1 :(得分:0)
静态方法是指类,而不是特定实例。它们对于班级的所有实例都是通用的。
您可以在没有任何实例的情况下调用静态方法,以及为什么可以在其中引用 this 。
答案 2 :(得分:0)
您无法通过静态方法访问此内容。请看这里: Oracle Understanding Class Members