2017-12-20 8 views
1

私はJavaを特に熟知していないので、インスタンスをどれだけ作成するのを最小限に抑えようとしています。現在、私は私のメイン、簡単な例では他のクラスのインスタンスのセット...インスタンスを使用してインスタンスを参照するにはどうすればよいですか?

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

基本的に私の言い訳を英語に置きます:インスタンスを使用してインスタンスを参照する方法を見たいだけです。

+2

'className.spam'は –

+0

は何が必要' static'キーワードのカバーをい動作するはず? –

+0

@PaulHicksは静的なものです:)ありがとう – VeeAyeInIn

答えて

3

これについてはいくつかの方法があります。第一の方法は、publicアクセス修飾子を使用することである。

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

これは、例えば、ClassNameのインスタンスからインスタンスにアクセスできるようになり:

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

第二の方法は、その方法を提供するgettersand settersを含みますインスタンスおよびがアクセス権を持つか、またはサブクラスを含む任意のクラスによって呼び出すことができます。

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

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

今、あなたはそれに応じてゲッターを呼び出すことができます。

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

これもからアクセスできるインスタンスごと外部クラス、そうでないものを作る:

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

第三の方法は、staticアクセス修飾子を必要としますインスタンスを含むこれは、

staticのメンバーが の代わりにクラスに属しているためです。

は、それはあなたが クラスの百万個のインスタンスを作成するか、いずれかを作成しない場合でも、staticフィールド のインスタンスが1つだけが存在することを意味します。すべてのインスタンスで共有されます。例えば

//Notice that I am not creating an instance, I am only using the class name 
ClassName.spam...; 
ClassName.antiSwear...; 
+0

特に、Minecraftのモデムでは、本当に静的である必要があるのは、メインのmodクラスインスタンス自体への参照です。 Forgeはこれをかなり* *あなたのためにします(私はBukitなどについては知らないので)、メインモジュールクラスとしての 'ClassName.classNameInstance.spam'は基本的に[Singleton](https: //en.wikipedia.org/wiki/Singleton_pattern)。 – Draco18s

関連する問題