为什么代码经常写成这样:
 Set<E>  set = new HashSet<E>();
 List<E> list = new  ArrayList<E>();
而不是: Set<E>  set = new Set<E>();
 List<E> list = new List<E>();
 

解决方案 »

  1.   

    你这样写试试不就知道了吗Set、List都是接口,能new吗?
    之所以写成:
    Set<E> set = new HashSet<E>();
    List<E> list = new ArrayList<E>();
    因为这样有利于扩展,面向接口编程(Spring就是这样)。
    打个比方,你什么时候想更改后面的类了,前面的接口不用换,不然前面的接口也得跟着修改。
    既然地球人都这么做,你也就顺流吧...
      

  2.   

    多太的应用,当父类是接口的时候是不能new的.呵呵.
      

  3.   

    父类对象的引用指向子类对象
    好处是 易于代码的维护楼主可能是想问这个吧
    ArrayList <E> list = new  ArrayList <E>(); 
    引用楼上的:打个比方,你什么时候想更改后面的类了,前面的接口不用换,不然前面的接口也得跟着修改。 
      

  4.   

    Set、List都是接口,不能直接new出对象来