java - 尝试参加另一个类时出现问题

标签 java eclipse bukkit

我编写了 getPlugin() 方法,以便能够从另一个类获取主类。

public class Main extends JavaPlugin {
    public Main getPlugin() {
        return this;
    }
}

但是当我尝试调用它时...

public class Arena {
    private Main plugin = Main.getPlugin();
}

...Eclipse 给我以下错误:

Cannot make a static reference to the non-static method getPlugin() from the type Main

我使用过静态,但静态在很多不同的地方给我带来了问题,而且我发现静态通常是一种糟糕的做事方式。导致内存泄漏等问题。

我尝试过使用 getter 和 setter,但它们也需要是静态的吗? 我一直使用的代码非常困惑,我想找到一种更干净的方式来访问另一个类。

最佳答案

如果要避免使用静态方法,则需要将变量作为参数传递给对象的构造函数。在您的示例中,它将像这样工作:

public class Arena {
     private final Main plugin;
     public Arena(Plugin plugin) {
         this.plugin = plugin;
     }
}

然后您可以从主插件类创建一个 Arena,并将 this 作为参数传递:

public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        Arena arena = new Arena(this);
    }
}

关于java - 尝试参加另一个类时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637856/

相关文章:

java - Eclipse 插件中的 Postgres 驱动程序不断出现找不到类异常

java - 如何将 Minecraft bukkit 插件的玩家实体设置为 Model()

java - Minecraft bukkit 插件右键单击项目

java - 如何在替换方法java中忽略大小写

java - hibernate 模式 : maven dependency version information

java - JVM.dll 在哪里搜索依赖的 dll

java - MongoDB Java - 在嵌套 json 中获取 id

java - 偏序比较器

java - 即使我单击 "run",Eclipse 也会运行 Debug模式

java - 如何使用 Eclipse 调试器查看集合内对象的类型?