开发者社区> 问答> 正文

java声明问题。 400 请求出错 

877.jpg

为什么要用A这样声明啊,为什么不用B方式呢,用B方式不是更不容易出错嘛,那为什么还要用A方式呢?它适用于那些情况呢?

展开
收起
kun坤 2020-05-25 20:34:48 446 0
1 条回答
写回答
取消 提交回答
  • "

    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();
    因为记得在哪里看到过一篇文章说如此能提升性能。。

    ######不错,我都明白了,很透彻哈######面向接口编程,防止你那天想把Arraylist 改成linkedlist.######如果这样改了.B的声明方式还是需要改噻######0.0,蛋疼。。这样改~~######

    简单地说,A更短一些,更环保。

    复杂点说,倡导面向接口编程。

    ######这,。。。面向接口的方式只是更灵活,你还不是面向对象编程######以前不是面向对象吗?怎么现在变成面向接口啊?(⊙o⊙)…######

        B方式不是容易出错,List 本是一个接口,你传一个什么样的实现类,他就代表对应的实现类,如果你传入的是一个LinkedList,那么这个list就代表着LinkedList, 它由其实现类决定的

    ######

    函数内部声明和调用区别不大,如果是作为参数传递的时候用就接口就体现出灵活性了

    public int getMaxNum(List numList){
    
        //这样写同样的逻辑,可以处理ArrayList也可以处理LinkedList
        return 0;
    }

    ######这个还可以。相当于用个大范围的东东放在那,只是是下面的子集均正确######哦~~~~~,这个得试试######上溯造型######囧rz######

    如果你的这个list需要在一些类库中进行处理,那么使用接口效果肯定要比使用具体的类效果好。因为类库一般都会尽可能的抽象,以便适应多种情形。具体编程的时候,也应该尽可能的在声明的时候使用抽象的接口,这样更加的灵活。

    其实你在具体写程序的时候,在方法内部的声明不怎么重要,但是如你的例子,你这个是类的字段,这个还是要注意的。

    ######字段是神马额?######2楼很真理了。######:)######

    真正狗价师就了解了,一个开发初期只能确定一些基本实体对象的属性,为了便于扩展往往用抽象的接口代替。但是随着开发进展肯定会有更多的特性加入,如果初期使用抽象定义,那么这些代码完全不用更改就可以兼容后面东西。

    ######恩######list是接口,一个接口可以不多个实现类,你可以用arraylist,也可以用linkedList实现"
    2020-05-26 13:12:26
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载