为了在另一个类中使用JavaPlugin,我使用静态对象,但我不明白为什么instance = this;
应该在onEnable()
中编写。
为什么不能在声明private static Main instance;
时编写
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
private static Main instance;
@Override
public void onEnable(){
instance = this;
saveDefaultConfig();
Bukkit.getPluginManager().registerEvents(new Event() , this);
}
public static Main getInstance() {
return instance;
}
}
发布于 2022-08-09 00:06:35
static
意味着您不需要类的实例(如new Main()
)来访问field
或method
(类也可以是静态的)。
用静态方法你可以做到
Main.method();
而不是
new Main().method();
this
引用类实例。因此,当您调用static
方法时,不存在this
引用,因为没有类实例。
因此,根据我的理解,这里发生的事情是,您的插件框架创建了一个新实例,并调用了onEnable()
like:new Main().onEnable()
方法。由于onEnable()
不是静态的,所以可以访问this
并将其赋值给static
变量。因此,之后您可以从您的static instance
方法的static
上下文中访问该getInstance()
变量。
https://stackoverflow.com/questions/73288298
复制相似问题