2

我为这个简单的问题搜索了超过 30 分钟,但找不到任何有用的东西。

我想编写一个接受类作为参数的方法。此外,我必须保证 Class 不是任何类型的类,而是一个接口(例如 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 回答