如何使用实例引用实例?

我正在尝试最小化我创建实例的程度,因为我不是特别擅长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...; 

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

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