2

この単純な質問を 30 分以上検索しましたが、役立つものは何も見つかりませんでした。

クラスをパラメーターとして受け入れるメソッドを書きたいと思います。さらに、クラスが何らかの種類のクラスではなく、インターフェイス (Action.class、Collection.class など) であることを保証する必要があります。

したがって、以下の行のように見える必要があります。しかし、 HELPに入れる場所を指定するには何が必要ですか?

public void registerInterface(Class<HELP> anInterfaceClass) {
 // do stuff with anInterfaceClass
}

オブジェクトを入れることができません。たぶんクラス:-)とても簡単ですが、解決策が見つかりません....

4

3 に答える 3

6

ジェネリック引数がインターフェイスである場合、コンパイル時のチェックはないと思います。ただし、ランタイムチェックを入れることはできます。

public void registerInterface(Class<?> anInterfaceClass) {
   if (!anInterfaceClass.isInterface()) {
       throw new IllegalArgumentException("An interface is expected!");
   }
于 2013-10-01T07:58:22.287 に答える
1

すべてのインターフェイスのスーパークラスであるが、非インターフェイス クラスのスーパークラスではない型はありません。したがって、マークした場所に配置できるものは何もありませんHELP

于 2013-10-01T07:57:24.117 に答える
0

Class でClass#isInterface()メソッドを使用して確認できます。指定された Class オブジェクトがインターフェイス タイプを表しているかどうかをチェックします。

Collection.class.isInterface()
于 2013-10-01T07:59:37.720 に答える