【问题标题】:superclass for all Interfaces所有接口的超类
【发布时间】:2013-10-07 07:07:36
【问题描述】:

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

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

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

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

我不能放入对象。也许类:-) 很简单,但我找不到解决方案....

【问题讨论】:

    标签: java class generics interface


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我会处理的。奇怪,java中没有指定这个
    【解决方案2】:

    没有一种类型是所有接口的超类,但不是非接口类的超类。所以没有什么可以放在你标记HELP的地方。

    【讨论】:

      【解决方案3】:

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

      Collection.class.isInterface()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-24
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 2013-04-19
        • 1970-01-01
        相关资源
        最近更新 更多