【问题标题】:List of Implementors?实施者名单?
【发布时间】:2011-10-12 15:48:37
【问题描述】:

我有一些类都实现了相同的 Java 接口,它本质上允许获取与特定实现者关联的 SQLite ContentValues,并且这些类在我的整个应用程序中被分组到各个类中的列表中。我一直希望使用通用列表插入方法来处理这些列表中的任何一个,理想的方式是:

public void doSomething(List<? implements Interface) {
 ...
}

然而泛型/接口不能以这种方式运行。现在,我可以这样做了:

public void doSomething(List<? extends SuperClass) {
...
}

如果我将类抽象化(并将默认方法设置为抛出 RunTimeExceptions 以强制被子类覆盖),它将完成基本相同的事情,只是更丑陋。

这对我正在做的任何事情都不是“关键任务”,我只是好奇是否有更顺畅的方法来完成某些任务。

【问题讨论】:

    标签: java list generics interface abstraction


    【解决方案1】:
    public void doSomething(List<? extends Interface> list) {
     ...
    }
    

    对于泛型,您使用 extends 甚至用于接口

    【讨论】:

    • 我认为必须进行语法调整才能让我这样做。非常感谢!
    【解决方案2】:

    你就不能这样做

    public void doSomething(List<? extends Interface> l) { ... }
    

    您可以在通用通配符规范中为接口和类使用extends

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多