Collection<V> values();
map的values()方法返回的是Collection接口,但是如下代码
Map<Integer,String> map = new TreeMap<Integer,String>(); map.put(1, "one"); map.put(2, "two"); Collection<String> collection = map.values(); System.out.println(collection.size());
却能正确的输出,请问这里collection.size()是调用了哪个子类的方法吗?
其次,
ArrayList<String> list = new ArrayList<String>(map.values());
以接口为参数是因为该接口的子类必然实现了它的方法,但是这里map.values()返回值是Collection接口,那么在
ArrayList(Collection<? extends E> c)
构造方法怎么能行得通呢?
yanrun
相关分类