执行者名单?

时间:2011-10-12 15:48:37

标签: java list generics interface abstraction

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

public void doSomething(List<? extends Interface> list) {
 ...
}
使用泛型的

即使对于接口

也使用扩展

答案 1 :(得分:2)

你不能这样做吗

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

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