我试图尽量减少创建实例的数量,因为我不是特别擅长Java。目前我在Main中有一组其他类的实例,一个简单的例子......
Email.find_each do |t|
t.update(address: t.address.downcase)
end
而不是制作越来越多的实例,我只是想创建一个主类的实例,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();
基本上把我的胡言乱语变成英语:我只想看看如何使用实例引用实例。
答案 0 :(得分: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...;