我应该将数组列表声明/初始化为列表、数组列表或数组列表<Cat>

2022-09-04 06:27:44

将集合声明为此类集合有何区别

public class CatHerder{
    private List cats;
    public CatHerder(){
        this.cats = new ArrayList<Cat>();
    }
}
//or
public class CatHerder{
    private ArrayList cats;
    public CatHerder(){
        this.cats = new ArrayList();
    }
}
//or
public class CatHerder{
    private ArrayList<Cat> cats;
    public CatHerder(){
        this.cats = new ArrayList<Cat>();
    }
}

答案 1

应将其声明为 ,并将其初始化为 .List<Cat>ArrayList<Cat>

List 是一个接口,ArrayList 是一个实现类。几乎总是最好针对接口而不是实现进行编码。这样,如果您以后需要更改实现,它就不会破坏针对接口进行编码的使用者。

根据您实际使用列表的方式,您甚至可以使用不太具体的java.util.Collection(扩展的接口)。List

至于(你可以把它理解为“猫的列表”)vs:这是Java的泛型,它确保了编译时类型的安全。简而言之,它允许编译器确保唯一包含对象。List<Cat>ListListCat


public class CatHerder{
    private final List<Cat> cats;
    public CatHerder(){
        this.cats = new ArrayList<Cat>();
    }
}

答案 2

我会做以下事情。

public class CatHerder{
    private final List<Cat> cats = new ArrayList<Cat>();
}