Java中数组和集合输出不一致的问题

今天测试其他属性时发现,集合和数组的输出不一致,故而仔细研究一下
过程如下: 下面是一个配置文件yml,里面配置了多个属性

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站
点击跳转浏览。

Java中数组和集合输出不一致的问题_第1张图片
​ 但是在测试中

//测试配置多个值
@Value("${users}")
private String[] toolArray;

@Value("${users}")
private List toolList;
@Test
public  void  getTools(){
    System.out.println(toolArray);
    System.out.println(toolList);
}

结果输出是
Java中数组和集合输出不一致的问题_第2张图片
不由引入集合和数组的深入研究,
发现System.out.println(); 源码中其实调用的是
Java中数组和集合输出不一致的问题_第3张图片
进而发现调用的是toString方法
Java中数组和集合输出不一致的问题_第4张图片
为什么可以读取list 是因为调用了List的toString方法,下面就是查看源码发现在AbstractCollection类型可以看到重写了 toString 方法
Java中数组和集合输出不一致的问题_第5张图片
那么就有疑问,list 怎么会调用ArrayList中方法,后来调用反射得到其类型的姓名发现
Java中数组和集合输出不一致的问题_第6张图片
查询得知 List的构造方法是ArrayList(),toString调用的是ArrayList中的toString方法
Java中数组和集合输出不一致的问题_第7张图片
Java中数组和集合输出不一致的问题_第8张图片

你可能感兴趣的:(JAVA基础,java,jvm,开发语言)