list和array打印对象的方法

为什么    

    对于java中的list来说,如果list中的元素是基本类型或者String类型,那么sout(list)是可以直接打印出元素的,如果是对象类型,那么结果是[email protected],原因如下:

    对于ArrayList, 我们sout(list)时候,调用的是toString()方法,这个方法在jdk的api方法表中没有找到,那么一定是从父类继承过来的了。

list和array打印对象的方法


然后我们进到AbstractCollection的toString方法定义中:

list和array打印对象的方法


我们知道为什么打印list常常会放在[]里面了,然后继续进入String.ValueOf(Object)

list和array打印对象的方法



我们发现最终还是调用list中每个元素的toString()方法打印的,这就是为什么一些基本数据类型和string类型可以打印看出内容了,然后继续跟进去

list和array打印对象的方法

看到这里恍然大悟,为何对象类型的toString常常看到一大段字符串,原来是这样构成的。


怎么做

对于上述问题的追踪,那么我们如何才能详细打印出list中对象各个属性值的信息呢,

1 重写toString方法,输出key-value形式的数据

2 用google开源的lombok,加注释@Data,它自动帮你重写了toString方法。

数组array打印对象的方法:Arrays.toString(array);