为什么构造函数值不继承属性限制

时间:2012-04-12 18:23:44

标签: java

为什么LifeCycle的属性定义不够,为什么我的构造函数还需要将它定义为ArrayList()?即便如此,为什么我的ArrayList没有从属性定义继承<LifeCycle>的限制?我不喜欢在两个地方设置它,似乎非常多余。

class Search {
    private Collection<LifeCycle> lifeCycleCollection;

    public Search() {
        this.lifeCycleCollection = new ArrayList<LifeCycle>();
    }
...

2 个答案:

答案 0 :(得分:4)

Collection是一个接口,当您创建实例时,实际上是在指定实现。

关于Generics的问题,与Java 7一样,您也可以编写

lifeCycleCollection = new ArrayList<>();

答案 1 :(得分:2)

Alessio's answer是正确的。你也可以通过从构造函数中移动东西来将代码收紧一行。

class Search {
    private Collection<LifeCycle> lifeCycleCollection = new ArrayList<>();

    public Search() {
    }