我正在努力减少创建实例的程度,因为我不是特别擅长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...
这样的东西
基本上把我的胡言乱语变成英语:我只想看看如何使用实例引用实例。
有几种方法可以解决这个问题。第一种方法是使用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...;