在期望接口时传递特定对象的列表。怎么样?

时间:2012-02-21 08:34:45

标签: java oop generics collections interface

我有一个SomeClass implements InterfaceA 我有一个方法:

public void doSomething(List<SomeClass) objects); 

在这个方法中,我想打电话:

public void doProcessing(List<InterfaceA) o); 

我该怎么做? 尽管SomeClass isa InterfaceA,但以下内容无效:

public void doSomething(List<SomeClass> objects){  

   doProcessing(objects);  

}

处理此问题的标准方法是什么?

3 个答案:

答案 0 :(得分:4)

更改doSomething的签名

public void doSomething(List<SomeClass> objects);

public void doSomething(List<InterfaceA> objects);

甚至更好

public void doSomething(List<? extends InterfaceA> objects); (在这种情况下,您也应该更改doProcessing

这意味着您的方法都可以使用接口,只知道接口而不关心具体实现。

答案 1 :(得分:4)

以这种方式声明doProcessing()方法

public void doProcessing(List<? extends InterfaceA> o); 

答案 2 :(得分:1)

public void doSomething(List<? extends InterfaceA> objects) 

应该有用。

至少阅读http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf两次。