これは実際的な質問ですが、実際的な答えがあるかどうかはわかりません。たとえば 10 個のサブクラスを持つスーパークラスがある場合、これらの 10 個のサブクラスをコレクションに入れる最も簡単な方法は何ですか? 現時点では (これは悪い設計かもしれません)、スーパークラスの静的コレクション フィールドにそれらを配置しました。
ただし、この質問の動機は、サブクラスの 1 つのフィールドの 1 つの ID を取得したためでしたが、同じサブクラスの別のフィールドへの参照が必要でした。
たとえば、サブクラスに次のフィールドがあるとします。
public class SampleSubClass extends SampleSuperClass{
...
private Object1 o_1;
private Object2 o_2;
private Object3 o_3;
...
}
プログラムのどこかで、私は o_2 の ID しか持っておらず、o_3 に到達したかったのです。理論的には、SampleClass のすべてのインスタンスをコレクションのどこかに置くよりも簡単な方法があるかもしれません。たとえば、おそらく私の夢の中に、スーパークラスがそのサブクラスに関する情報を保持し、スーパークラスがそれ自体でコレクションとして機能するソフトウェア言語があるとします。
しかし、気にしないでください。私には、コレクションをプログラムのどこかに置く良い方法のように思えます。それは、ハッシュマップ/ハッシュテーブルを使用し、それをスーパークラスの静的メンバーとして使用することです。
もっと良い方法があることを教えてください。オブジェクト内のフィールド B への参照のみを使用して、オブジェクト内のフィールド A を参照する方法はありますか?
たとえば、ActionPerformed メソッドがあるとします。このメソッドには、ActionEvent オブジェクト パラメータに含まれるソース オブジェクトがあります。そのソースオブジェクトを所有/含んでいたクラスのインスタンスを見つけるにはどうすればよいですか? これを設計する最良の方法は何ですか?