-1

sClass x = new sClass()たとえば、private static を呼び出すたびに、がインスタンス化された時刻などの情報 (配列) をfromaClassに格納したいと考えています。これは可能ですか?最も正しいオブジェクト指向ソリューションは何ですか? (複数ある場合は、記載していただけると幸いです)sClassaClassaClass

私はこのようなものを持っています:

private static sClass x = new sClass();

基本的に、sClass で aClass が構築された時間を使用して配列に保存し、各 aClass の開始時間を比較できるようにします。

4

1 に答える 1

1

静的プロパティは、1つのインスタンスでその親クラスにバインドされるプロパティです。

クラスの新しいインスタンスを静的プロパティxに格納することは可能です(これは現在行っていることですが、xは1つのインスタンス(作成してxにロードした最新のsClass()インスタンス)のみを保持します。

必要に応じて、静的なsClass xの代わりに、プライベートsClass [] sClassArray(sClassオブジェクトの配列)があり、新しいsClassオブジェクトを作成するたびに、それを要素として配列にロードします。

たとえば、プライベート静的xプロパティを保持するクラスで次のことができます。

private static sClass[] sClassArray = new sClass[10]; // Will hold up to 10 sClass objects.

// When you instantiate new instances of sClass objects:

for (int i = 0; i < sClassArray.length; i++) {
    if (sClassArray[i] == null) {
        // Basically load the new sClass object into a slot in the array that hasn't yet been taken.
        sClassArray[i] = new sClass();
        break;
    }
}

次に、インスタンス化したsClassオブジェクトを確認する必要があるときに、sClassArray[]配列を反復処理できます。

もちろん、いくつかの問題があります。

  1. 動的オブジェクトを静的に追跡する必要があるのはなぜですか?
  2. オブジェクトの配列を配置すると、不要なメモリを消費する可能性があります(配列要素をリサイクルすることを選択できます。オブジェクトプールパターンを検索するだけです)。
于 2013-03-10T21:58:30.887 に答える