java 集合类的使用

发布网友

我来回答

6个回答

热心网友

List l1=new ArrayList();

第一,这里只是声明了一个接口的引用l1去指向实现它的类的一个对象(即new ArrayList()),并没有实例化接口。

第二,这里是一个java多态性的应用,用接口的引用去指向实现它的类的对象,这样可以很方便的调用这个类里的实现接口的方法。

第三,为什么List l1=new ArrayList()比ArryList l1=new ArryList()好呢?
我们拿着List l1可以指向所有实现了List接口的对象,而我们拿着ArrayList L1却只能指向ArrayList的对象,这就是多态性的好处

热心网友

接口可以定义,但实现不可以是接口,但可以是实现接口的类.ArrayList是一个实现了List接口的类,所以可以实例化

li可以操作list和arraylist的方法,如果直接arraylist那么就只能操作arraylist的方法

热心网友

多态!!

热心网友

是的,所以才使用ArrayList进行实例化,只是被当作List来用而已。

其实就好像说:
我们要把某某人包装成一个明星。

上面的定义就是
我们要把一个新的ArrayList当成一个List。

相对的,下面的例子是错误的。这样才能说把接口实例化。这样是会报错的。
List l1 = new List();

如果定义l1为List,则l1只能使用List里的方法。不过l1其实还是一个ArrayList,所以你可以通过强制转型来把l1转成ArrayList来使用。
比如
ArrayList l2 = (ArrayList)l1;

或者
((ArrayList)l1).ArrayList的特有方法。

使用List来定义应该算个习惯用法,没有太多的意义,因为对于写死的定义来说没有太大的意义,但对于使用注入之类手段来实例化对象的方法来说就比较有意义了,定义为List就代表我不仅可以注入ArrayList的实例也可以注入其它List实现类的实例。这样一来虽然调用的方法是一样的方法,但方法的实现就可以多种多样了。

热心网友

你看清楚了,这里new的不是List,而是ArrayList对象。

热心网友

记住这样的公式就行了,接口 a = new 实现接口的类();你那里是这样子的,new的不是List,而是ArrayList对象

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com