如何使用实例引用实例?

问题描述 投票:1回答:1

我正在努力减少创建实例的程度,因为我不是特别擅长Java。目前我在Main中有一组其他类的实例,一个简单的例子......

public final class ClassName extends JavaPlugin {

    AntiSwear antiSwear = new AntiSwear();
    Spam spam = new Spam();

    @Override
    public void onEnable() {
        // Plugin startup logic
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }
}

而不是制作越来越多的实例,我只是想创建一个主类的实例,ClassName className = new ClassName();并运行像className.spam...这样的东西

基本上把我的胡言乱语变成英语:我只想看看如何使用实例引用实例。

java class minecraft instances
1个回答
3
投票

有几种方法可以解决这个问题。第一种方法是使用public访问修饰符:

public AntiSwear antiSwear = new AntiSwear();
public Spam spam = new Spam();

这使得实例可以从ClassName的实例访问,例如:

ClassName className = new ClassName();
className.spam...;
className.antiSwear...;

第二种方法涉及getters and setters,它提供了一个方法,可以由任何包含实例并具有访问权限的类调用,或者由子类调用:

AntiSwear antiSwear = new AntiSwear();
Spam spam = new Spam();

public AntiSwear getAnitSwear(){
    return this.antiSwear;
}
public Spam getAnitSwear(){
    return this.spam;
}

现在您可以相应地调用getter:

ClassName className = new ClassName();
className.getSpam()...;
className.getAntiSwear()...;

第三种方法涉及static访问修饰符:

public static AntiSwear antiSwear = new AntiSwear();
public static Spam spam = new Spam();

这使得实例可以从每个外部类访问,甚至是那些不包含实例的外部类。这是因为:

static成员属于该类而不是特定实例。

这意味着即使您创建了一百万个类的实例,或者您没有创建任何实例,也只存在一个static字段的实例。它将由所有实例共享。

例如:

//Notice that I am not creating an instance, I am only using the class name
ClassName.spam...;
ClassName.antiSwear...;
© www.soinside.com 2019 - 2024. All rights reserved.