有没有办法在界面和JAVA中的专业化之间进行转换?

时间:2016-01-11 15:41:58

标签: java oop interface

我的代码中有这三个接口:

public interface ParentInterface {
  // some properties and methods
}
public interface ChildOne extends ParentInterface{
  //some extra properties and methods
}
public interface ChildTwo extends ParentInterface{
  //some extra properties and methods
}

我有一些函数void someFunc(List<ParentInterface>),它应该能够接受实现ChildOneChildTwo的实例的混合列表。但是,如果我有List<ChildOne>怎么办?有没有比这个更好的方式来呼叫someFunc

List<ChildOne> coList = new HashList<ChildOne>();
//add some items to coList
List<ParentInterface> piList = new HashList<ParentInterface>(coList.size());
piList.addAll(coList);
someFunc(piList);

我是否可以像someFunc(coList)那样拨打电话而无需创建新列表?

1 个答案:

答案 0 :(得分:1)

正如Jon Skeet在评论中所说,我将我的功能的签名改为void someFunc(List<? extends ParentInterface>),这就像一个魅力!