次のコードは、SomeClass
クラスに具体的に実装されているインターフェイスSomeGenericInterface
で一般的に宣言された最初の型パラメータクラスを取得します。ジェネリック型引数を取得する適切な方法
このコードは実際に動作します。
質問は次のとおりです。いつもと同じ要素数を持つことが保証
getInterfaces()
getGenericInterfaces()
:それはつまり、次の2つのクラスメソッドは、どのような場合に動作しますこれらのメソッドによって返されるインタフェースの順序はそれぞれ同じですか?
これを行うにはもっと安全な方法がありますか?
<!-- language: lang-java -->
Class clazz = SomeClass.class;
Class classes[] = clazz.getInterfaces();
Type types[] = clazz.getGenericInterfaces();
ParameterizedType found = null;
for (int i=0; i<classes.length; i++) {
if ( classes[i] == SomeGenericInterface.class) {
found = (ParameterizedType) types[i];
break;
}
}
if (found == null) {
return null;
}
Class firstType = (Class) found.getActualTypeArguments()[0];
これはまさに私が探していたものでした。ありがとう、rsp! – hpgisler
から来てhttp://stackoverflow.com/questions/22250619/classgetinterfaces-and-classgetgenericinterfaces-return-arrays-of-differin私は、この仮定はjavacコンパイルされたコードのためだけに保持する必要があります警告する必要があります。クラスが他のどこから来ていても、ベットがすべてオフの場合 – blackdrag