为什么LifeCycle的属性定义不够,为什么我的构造函数还需要将它定义为ArrayList()?即便如此,为什么我的ArrayList没有从属性定义继承<LifeCycle>
的限制?我不喜欢在两个地方设置它,似乎非常多余。
class Search {
private Collection<LifeCycle> lifeCycleCollection;
public Search() {
this.lifeCycleCollection = new ArrayList<LifeCycle>();
}
...
答案 0 :(得分:4)
Collection是一个接口,当您创建实例时,实际上是在指定实现。
关于Generics的问题,与Java 7一样,您也可以编写
lifeCycleCollection = new ArrayList<>();
答案 1 :(得分:2)
Alessio's answer是正确的。你也可以通过从构造函数中移动东西来将代码收紧一行。
class Search {
private Collection<LifeCycle> lifeCycleCollection = new ArrayList<>();
public Search() {
}