HashMap map = new HashMap();
Set set = map.keySet();
在java中 Set是一个接口,为什么能够这样用?
接口不是只有被实现后才可以用吗?

解决方案 »

  1.   

    这里的map是HashMap类型的对象,可以用keySet方法。set是一个Set类型的变量,并没有实例化对象,也没有用其中的方法,所以没什么问题。
      

  2.   

    Map的方法,返回map里面的key的集合,用set装起来的,而不是数组或者list而已
      

  3.   

    Set set = map.keySet();map返回的是一个实现set接口的对象。这个对象实现了Set接口,就可以这样赋值。或者说叫向上转型也可以就好比你写List a = new ArrayList();
    list是接口,arrayList是实现list接口的对象。
      

  4.   

    这里的Set是声明一个对象指向map得到的set实例
      

  5.   

    这是向上转型,实现了set接口就可以向上转型为set