(より適切に要約するために、大きな壁のテキストから編集されます) したがって、問題は次のとおりです。
AbstractMyClass のコレクションがあります。このコレクションには、多数の具体的な子クラスがあります。各子クラスには、特定のタイプのオブジェクトのフィールドも含まれます。AbstractMyClass には、それぞれ独自の object フィールドを持つ多数の異なる子が存在する可能性があります。これらの各オブジェクトには、Object 以外に共有の親クラスがない可能性があります。
たとえば、MyClassA には String があり、MyClassB には Integer があり、MyClassC には MyCustomClass がある場合があります。これを行うには、残念ながらさまざまなオブジェクトが必要です。
問題は、このコレクションを評価する必要があり、一連の適切な条件が与えられた場合、AbstractMyClass 内のオブジェクトを抽出、検査、操作、保存、保存などを後の操作のために行う必要があるということです。条件や MyClass/オブジェクト タイプに基づいてさまざまな操作が考えられます。MyClass 内のデータを処理する操作は、他のより集中化されたクラス (つまり、スレッド プールを管理するクラス) のように実行できない場合があります。それらに対処する必要があります。そのため、いくつかの非常に異なるオブジェクト タイプを処理する必要があります。これは確かに実行できますが、それを処理するための合理的にクリーンまたは動的な方法は考えられません。もちろん、次のことを試すことができます。
- ジェネリックを使用すると、一部の子クラスを削除できますが、そのクラスの外では、オブジェクト T が何であるか、またはこれ以上いじわるせずにそれを処理する方法がわかりません。
- すべてを型チェックします。これにより、かなり長く醜い条件が作成され、新しいオブジェクト型が導入された場合は維持する必要があります。
- AbstractMyClass 内のデリゲートですが、これは、各インスタンスを処理するためにさらに多くのクラスを構築することを意味し、デリゲートは必要なすべての機能を処理できない場合があります。
- すべてのオブジェクト タイプのフィールドを持つラッパー オブジェクト。よし、全部ヌルチェックしよう。
窮地が見えます。この種のことを処理する「良い」方法はありますか、それとも実行時に十分な情報がない可能性があり、誰もがさまざまな方法でそれを回避するため、Java が直接処理できない問題の 1 つにすぎませんか?