Java List vs ArrayList

作为一个C ++的老朋友,我已经设法解决了我的问题,但我不能在这里围绕底层的Java机制:

Vector x = new Vector(); // OK ArrayList y = new ArrayList(); // OK List zzz = new ArrayList(); // OK solves problem below but question remains List z = new List(); // WHY? Compiler error: Cannot instantiate 

List是一个接口,有点像C ++中有一些= 0方法的类。 你无法实例化它。

ArrayList “inheritance” List (或者用Java术语,实现它),因此这些引用是赋值兼容的。

List是一个接口,您无法初始化它。 ArrayList实现List ,因此您可以将ArrayList实例分配给List变量。

是。 因为List是一个接口而在Java中,您无法实例化接口。 您只能实例化一个类。

ArrayList是一个实现List <>的类,这就是你可以实例化它的原因。 🙂

List不是类它是一个接口,你不能实例化接口对象。

ArrayList是实现List接口的类,因此可以实例化ArrayList对象并分配给List对象

List是一个接口。 您无法使用new运算符创建接口实例。 这就是行Listz = new List(); 给出错误。 只能实例化类。

“接口”就像一个对象必须遵守的协议。

List是一个interface ,无法实例化接口。

它用于实现多态性。 即接口类型的引用可以包含implements它的任何类的对象。

 List zzz = new ArrayList(); 

它工作,导致ArrayList实现List。