为什么要用A这样声明啊,为什么不用B方式呢,用B方式不是更不容易出错嘛,那为什么还要用A方式呢?它适用于那些情况呢?
"
List是饭,饭有很多种,这是一个泛指。
比如ArrayList是米饭,LinkedList是包子,Vector是面条,诸如此类,还有很多,它们都继承了List接口,为List的实现类。
至于好处么,你声明一个方法 method(List list); 告诉其它开发人员,这个地方能传入一个List类型的对象,那么别人可以随意传递ArrayList或LinkedList或者自己实现的类,当然它只要符合List的要求就行了。就好比说,你要吃饭,那么随便给你包子面条自己应付就可以了。换而言之,你说你要吃面条,你搞个这样的方法 method(ArrayList list);这样的话别人只能够传递ArrayList类型的对象给你。
至于为啥个要这么做,List接口下的实现类各有不同,有的线程安全,有的速度更快,适用场合不同。但是它们都符合List定义的要求,而你的method(List list);得到这个对象之后,一样可以按照List提供的方法用它了,只管拿筷子吃它就可以了
但是你要是移动开发的话或许应该这样
ArrayList list = new ArrayList();
Map map = new HashMap();
因为记得在哪里看到过一篇文章说如此能提升性能。。
简单地说,A更短一些,更环保。
复杂点说,倡导面向接口编程。
######这,。。。面向接口的方式只是更灵活,你还不是面向对象编程######以前不是面向对象吗?怎么现在变成面向接口啊?(⊙o⊙)…######B方式不是容易出错,List 本是一个接口,你传一个什么样的实现类,他就代表对应的实现类,如果你传入的是一个LinkedList,那么这个list就代表着LinkedList, 它由其实现类决定的
######函数内部声明和调用区别不大,如果是作为参数传递的时候用就接口就体现出灵活性了
public int getMaxNum(List numList){ //这样写同样的逻辑,可以处理ArrayList也可以处理LinkedList return 0; }######这个还可以。相当于用个大范围的东东放在那,只是是下面的子集均正确######哦~~~~~,这个得试试######上溯造型######囧rz######
如果你的这个list需要在一些类库中进行处理,那么使用接口效果肯定要比使用具体的类效果好。因为类库一般都会尽可能的抽象,以便适应多种情形。具体编程的时候,也应该尽可能的在声明的时候使用抽象的接口,这样更加的灵活。
其实你在具体写程序的时候,在方法内部的声明不怎么重要,但是如你的例子,你这个是类的字段,这个还是要注意的。
######字段是神马额?######2楼很真理了。######:)######真正狗价师就了解了,一个开发初期只能确定一些基本实体对象的属性,为了便于扩展往往用抽象的接口代替。但是随着开发进展肯定会有更多的特性加入,如果初期使用抽象定义,那么这些代码完全不用更改就可以兼容后面东西。
######恩######list是接口,一个接口可以不多个实现类,你可以用arraylist,也可以用linkedList实现"版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。