用Map map = new HashMap()创建一个map对象和用HashMap map = new HashMap()创建一个对象有什么不同?同样Set set = new HashSet()和HashSet set = new HashSet()有什么区别?两者应该在什么情况下选用?

解决方案 »

  1.   

    面向接口编程
    一般来说,如果你只需要用到接口的方法,那么用接口声明比较好,比如Map map = new HashMap(),这就是面向接口编程的思想
    如果要用到具体子类的方法,就只能用子类来声明了HashMap map = new HashMap()
      

  2.   

    第一阶段:
    HashMap map = new HashMap(),刚开始一般都喜欢这么写 第二阶段:
    Map map = new HashMap(),这种写法一般是受到面向接口编程的负面影响,或者是追求程序美感的人喜欢使用,因为在返回类型时我们一般都使用接口类型.第三阶段:
    HashMap map = new HashMap(),那样熟悉java机制而且追求效率的人一般都使用这种方式.当然有一点,接口声明(public方法返回值和参数)中无论如何都要使用接口.
    如果只是临时变量,两种写法都可以接口.
      

  3.   

    《Think in java》第五章:类的多态性