所有接口的超类

时间:2013-10-01 07:55:02

标签: java class generics interface

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

我想编写一个接受Class作为参数的方法。 另外,我必须保证Class不是任何类,而是接口(例如Action.class,Collection.class,...)。

所以它必须看起来类似于下面的行。但是我需要指定它在 HELP 中的位置?

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

我不能放入Object。也许班级:-) 这么容易,但我找不到解决方案......

3 个答案:

答案 0 :(得分:6)

我认为没有编译时检查泛型参数是否是接口。你可以进行运行时检查。

public void registerInterface(Class<?> anInterfaceClass) {
   if (!anInterfaceClass.isInterface()) {
       throw new IllegalArgumentException("An interface is expected!");
   }

答案 1 :(得分:1)

没有类型是所有接口的超类,而不是非接口类的类。所以你没有任何东西可以放在你标记为HELP的地方。

答案 2 :(得分:0)

您可以在Class中使用Class#isInterface()方法进行检查。它检查指定的Class对象是否表示接口类型。

Collection.class.isInterface()