问题简述
我去查了下API,发现:
- Collection接口里没有toString方法
- map.values()返回值是个Collection集合
那么问题来了,这个c1调用的究竟是谁的toString方法?
萌新求助,大神留步,么么哒
Collection<Integer> c1 = map.values();
System.out.println(c1);
源代码
import java.util.Set;
public class Demo044 {
public static void main(String[] args){
//demo01();
//demo02();
Map<String,Integer> map = new HashMap<>();
map.put("z3",23);
map.put("z4",24);
map.put("z5",25);
map.put("z6",26);
Collection<Integer> c1 = map.values();
System.out.println(c1);
}
}
首先一切类都是Object类的子类
你查看HashMap的源码,values方法,返回的是一个内部类Values对象
这个内部类没有覆盖toString()方法,所以找它的父类AbstractCollection
所以用的是AbstractCollection的toString方法