首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我的插件-getInstance

我的插件-getInstance
EN

Stack Overflow用户
提问于 2022-08-08 23:54:28
回答 1查看 96关注 0票数 -1

为了在另一个类中使用JavaPlugin,我使用静态对象,但我不明白为什么instance = this;应该在onEnable()中编写。

为什么不能在声明private static Main instance;时编写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
    }

}
EN

回答 1

Stack Overflow用户

发布于 2022-08-09 00:06:35

static意味着您不需要类的实例(如new Main())来访问fieldmethod (类也可以是静态的)。

用静态方法你可以做到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Main.method();

而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Main().method();

this引用类实例。因此,当您调用static方法时,不存在this引用,因为没有类实例。

因此,根据我的理解,这里发生的事情是,您的插件框架创建了一个新实例,并调用了onEnable() like:new Main().onEnable()方法。由于onEnable()不是静态的,所以可以访问this并将其赋值给static变量。因此,之后您可以从您的static instance方法的static上下文中访问该getInstance()变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73288298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文