我有一些类都实现了相同的Java接口,它基本上允许获取与特定实现者关联的SQLite ContentValues,并且这些类在我的应用程序中被分组到各个类的列表中。我一直希望使用通用列表插入方法来处理这些列表中的任何一个,理想情况是:
public void doSomething(List<? implements Interface) {
...
}
然而,泛型/接口不能以这种方式运行。现在,我可以做到:
public void doSomething(List<? extends SuperClass) {
...
}
如果我使类抽象(并设置默认方法以抛出RunTimeExceptions以强制子类重写),它将完成基本相同的事情,只是更加丑陋。
对于我正在处理的任何事情,这不是“关键任务”,我只是好奇是否有更顺畅的方法来完成某些任务。
答案 0 :(得分:4)
public void doSomething(List<? extends Interface> list) {
...
}
使用泛型的即使对于接口
也使用扩展答案 1 :(得分:2)
你不能这样做吗
public void doSomething(List<? extends Interface> l) { ... }
您可以在接口和类的通用通配符规范中使用extends
。