Javaジェネリック環境での相続関係を判断
質問:
一般的なプロジェクトの使用では、指定されたタイプオブジェクトに指定された汎用クラスが割り当てられているかどうかを判断する必要があります。クラスの一般的な特性により、
メソッドの使用は失敗します。
IsSubclassOf
例:
次のクラスレベル構造を検討してください:
目標は、テストクラスがジェネリッククラスから派生しているかどうかを判断することです。
<code class="language-java">public class GenericClass<T> implements GenericInterface<T> { } public class Test extends GenericClass<SomeType> { }</code>
Javaは、この問題の解決策を提供します。最初に、実用的な機能を作成します:
さて、テストがgeneclassから派生しているかどうかを確認するには、次のコードを使用してください。このメソッドは、階層構造(汎用を含む)をチェックして、継承関係を決定します。強力で柔軟なソリューションを提供します。 ここでは、一般的なパラメーターを考慮せずに元のタイプが一致しているかどうかを判断する必要があるため、直接使用していることに注意してください。 以前のバージョンでは、この状況でnullまたは誤ったタイプを返すことができ、判断の失敗が生じる場合があります。 改良されたバージョンはより信頼性が高くなります。
<code class="language-java">static boolean isSubclassOfRawGeneric(Type generic, Type toCheck) { while (toCheck != null && toCheck != Object.class) { Type cur = toCheck instanceof ParameterizedType ? ((ParameterizedType) toCheck).getRawType() : toCheck; if (generic == cur) { return true; } toCheck = toCheck.getSuperclass(); } return false; }</code>
以上がJava でジェネリックを使用してクラスの派生を決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。