如何使用实例引用实例?

时间:2017-12-20 03:07:15

标签: java class minecraft instances

我试图尽量减少创建实例的数量,因为我不是特别擅长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();

的内容

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

1 个答案:

答案 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...;