`
liulanghan110
  • 浏览: 1064953 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

为什么要这样写List list = new ArrayList();

    博客分类:
  • JAVA
阅读更多

关于List,为什么要这样定义,而不用直接用ArrayList

List   list   =   new   ArrayList(); 

 

这种写法是java面向对象的一种思想,即依赖于抽象不依赖于实现。 给调用者提供的应该是接口或者抽象类, 而实现者可以实现或者继承接口或者抽象类来满足调用者, 这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。 这就是java设计模式的基础思想之一。

使用List,你就可以不必关注用的是ArrayList,还是Vector。例如在下面的代码中

List   getList(){ 
         List   list   =   new   ArrayList(); 
         return   list; 
}

 

客户程序不必关心你用的是ArrayList还是Vector,哪天你因为需要改成

List   getList(){ 
         List   list   =   new   Vector(); 
         return   list; 
} 

 

客户程序并不受影响,你的方法的返回值也不必改变,但如果你用

Vector   getList(){ 
         Vector   list   =   new   Vector(); 
         return   list; 
}

 

你看,首先你的方法的返回值必须作相应改变,调用该方法的客户程序也得改,这可能牵涉一系列改动,而用List则省去了这些麻烦。
从这个例子可以推而广之,在new一个新对象时,左边尽量使用接口(或者抽象类),以保持代码的最大灵活性。

分享到:
评论

相关推荐

    使用对象ArrayList填充DataGrid,C#源代码ArrayList MyList = new ArrayList();

    使用对象ArrayList填充DataGrid,C#源代码ArrayList MyList = new ArrayList();

    Java期末考试试题(一)

    B .List myList=new ArrayList(); C.ArrayList myList=new List(); D. List myList=new List(); 2.paint()方法使用哪种类型的参数? A Graphics B Graphics2D C String D Color 3.指出正确的表达式 A ...

    list.size()==0与list==null、emptyList

    List list1 = new ArrayList(); System.out.println(list1.size());//0 List list2 = null; System.out.println(list2.size());//NullPointerException 上面表示的是一个empty array,在堆中已经存在,只是其中没有...

    java List排序工具类

    java List排序工具类 使用示例: ... List<Person> list = new ArrayList(); list.add(person); list.add(person1); list.add(person2); list.add(person3); list.add(person4); return list; }

    ArrayList.txt

    ArrayList<String> list=new ArrayList(); 2、ArrayList(int initialCapacity)  //这是第三个构造方法,构造了一个指定大小但内容为空的链表。 //initialCapacity参数就是初始容量大小。 //如果你需要创建一...

    java实现innerjoin关联算法

    场景:有三个List变量,分别为list1、list2、list3 List,Object>> list1 = new ArrayList(); List,Object>> list2 = new ArrayList(); List,Object>> list3 = new ArrayList(); 现在需要根据一个输入的字符"list1....

    C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)

     在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍。于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的...

    object与 json 相互转换工具类

    List<String> list1 = new ArrayList(); String str1 = g1.toJson(list1); //json 转list Gson g2 = new Gson(); List<String> list2 = g2.fromJson(str1, new TypeToken<List<String>>(){}.getType());

    FuionCharts Java根据List生成Json

    List<Student> list = new ArrayList(); Random rnd = new Random(); for (int i = 0; i ; i++) { Student student = new Student(); student.setCj(rnd.nextDouble()*100); student.setName("name"+i); list....

    android 仿ipone气泡短信—自定义list

    list = new ArrayList(); DetailEntity d1 = new DetailEntity("私念", "2010-11-11", "你好!", R.layout.list_say_me_item); list.add(d1); DetailEntity d2 = new DetailEntity("美女", "2010-11-11...

    list分页(包含怎么调用分页的例子)

    List pageList = new ArrayList(); for (int i = pageStartRow; i ; i++) { pageList.add(list.get(i)); } return pageList; } /** * 获取上一页的对象集合 * * @return List 对象集合 */...

    Android代码-高自由度的标签选择器

    TagSelectorView TagSelectorView A tag selector with animation 已更新v2.0 注意2.0与1.0并不兼容,2.0之前最后版本号为 1.2.2.3 ... Setup repositories { ...List dataBeanList = new ArrayList(); for (int i

    C# 没有动态的数组,可以用arraylist或list取代

    ArrayList a = new ArrayList(); a.Add(“a”);//这里”a”可以改成你要取出的字符串 a.Add(“b”); 运行后a就相当于一个数组a[0]=”a”,a[1]=”b 推荐用泛型 代码如下:List<String> list = new List(); for (int i...

    list嵌套list

    仿某团list里嵌套list\ package com.zl.listview; import java.util.ArrayList; import java.util.HashMap; import com.kjy.kjylistview.R; import android.app.Activity; import android.content.Intent; import...

    Android ijkplayer播放rtsp直播流

    List<VideoOptionModel> list1 = new ArrayList(); list1.add(videoOptionMode0l); list1.add(videoOptionMode02); list1.add(videoOptionMode03); list1.add(videoOptionMode04); list1.add(videoOptionMode...

    java 字符串排序

    字符串数组 排序

    控制台下变色龙扑克游戏

    System.Collections.ArrayList list = new System.Collections.ArrayList(); for (int i = 3; i <= 6; i++) { for (int j = 1; j <= 13; j++) { Poker p = new Poker(); switch (j) { case 1: p = new ...

    set.list.map接口

    List list=new ArrayList(); list.add(10); list.add(2); list.add(34); //对list数组进行自然排序 Collections.sort(list); //依次检索输出list的所有对象 // for(int i=0;i<list.size();i++){ // System....

    Java form图形界面版的单机斗地主游戏-附源代码.rar

     List currentList[] =new ArrayList[3]; // 当前的出牌  List playerList[] = new ArrayList[3]; // 定义3个玩家表  List lordList;//地主牌  Card card[] = new Card[56]; // 定义54张牌  JTextField ...

Global site tag (gtag.js) - Google Analytics