我搜索了这个简单的问题超过30分钟,找不到任何有用的东西。
我想编写一个接受Class作为参数的方法。 另外,我必须保证Class不是任何类,而是接口(例如Action.class,Collection.class,...)。
所以它必须看起来类似于下面的行。但是我需要指定它在 HELP 中的位置?
public void registerInterface(Class<HELP> anInterfaceClass) {
// do stuff with anInterfaceClass
}
我不能放入Object。也许班级:-) 这么容易,但我找不到解决方案......
答案 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()