2

私は最近、次の Java パターンをいじっています。いくつかのコード編成の問題を解決するのに役立ちましたが、ベスト プラクティスやパフォーマンスなどについて複数の質問があります。

public class Example {

    private static int[] somethingList = int[128];

    public static final Example somethingOne = new Example(1);
    public static final Example somethingTwo = new Example(2);
    public static final ExampleChild somethingThree = new ExampleChild(3); // ExampleChild would extend Example

    private Example( int id ){
        // checks for existing id, etc
        somethingList[id] = this;
    }

    public static Example getById( int id ){
        return somethingList[id];
    }
}

このクラスは、もののリストを静的変数に登録しますが、ID によってリストを配列に保存するプライベート コンストラクターも持っています。Minecraft は、これが実際に使用されている場所の一例です。アイテム クラスの「レジストリ」です。

いくつかの質問:

  • これ以外の場所に保存された Example の単一のインスタンスがない場合は、このコードのいずれかを呼び出すか、すべてを再実行しますか、それともすべて一度だけ実行しますかExample.somethingOne? Example.getById()多分私はいくつかの理解が欠けていstaticますか?
  • somethingOneID で呼び出すだけでなく、の静的インスタンスを公開したい理由はありますか? getByIdここで名前による静的参照を持たないリストにカスタムアイテムを追加したモッズ/プラグインがある場合は、フレンドリーなようです。
4

2 に答える 2