打电话时的静电问题'这个'在一个重复的任务

时间:2015-07-06 15:56:13

标签: java static minecraft bukkit

我正在尝试创建一个使用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变量仍然是我试图理解的东西,所以如果有人可以将我链接到我可以阅读的地方,或者即使是视频也会很棒。

至于问题,如果有人有解决方案,那么任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

结帐this post,快速轻松地解释static关键字。

为了避免错误说该方法需要是静态的,请在实例而不是类上调用该方法。

像这样:

Foo f = new Foo();
f.newCountdown();

而不是:

Foo.newCountdown();

答案 1 :(得分:0)

静态方法是指类,而不是特定实例。它们对于班级的所有实例都是通用的。

您可以在没有任何实例的情况下调用静态方法,以及为什么可以在其中引用 this

答案 2 :(得分:0)

您无法通过静态方法访问此内容。请看这里: Oracle Understanding Class Members