ホームページ  >  記事  >  オブジェクトのゲッター/セッターを保持する静的バージョンの Map を作成するにはどうすればよいですか?

オブジェクトのゲッター/セッターを保持する静的バージョンの Map を作成するにはどうすればよいですか?

PHPz
PHPz転載
2024-02-06 08:03:03655ブラウズ
質問の内容

オブジェクトが呼び出されたときに構築されるマップがあり、呼び出し元に変数名をキーとして、ゲッター/セッターのペアを値として提供します。これは期待どおりに機能します。私の問題は、呼び出すたびにビルドされることです。毎回マップをビルドする必要がないように、それを静的として宣言し、呼び出したいオブジェクトを提供するだけの方法があるかどうか疑問に思っていました。ゲッターとセッターは実行時に変更されないためです。

###私は持っている:### リーリー リーリー

これにより、他の場所から実行できるようになります:

リーリー

先ほども言いましたが、これは機能しますが、呼び出すたびにインスタンスが作成され、マップにデータが追加されます。

SomeStruct

public static Map<String、Pair<Supplier、Consumer>> nameToGetterSetterMap = new HashMap<>(); (またはsome などは有効です)ので、 public Map<String, Pairphpcnltphp cnSupplier, Consumer>> getNameToGetterSetterMap() はインスタンス化されたパラメータを引数 SomeStruct として受け取り、その呼び出しをその特定のオブジェクトにのみ適用します。 静的マップを作成して

SomeStruct::getSomelong

などで埋めようとしましたが、コンパイラはそれはできないと言います。

正解

メンバーフィールド

答えは明らかなようですが、何かが欠けているに違いありません。新しく構築されたマッピングをプライベート メンバー フィールドとしてキャッシュします。

リーリー

Map.of 変更できないことに注意してください。 map

メンバー変数を

static に設定できるはずですが、SomeStruct を何度もインスタンス化しているかどうかを確認しない限り、この Micro -最適化には苦労する価値はありません。

以上がオブジェクトのゲッター/セッターを保持する静的バージョンの Map を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。