今天测试其他属性时发现,集合和数组的输出不一致,故而仔细研究一下
过程如下: 下面是一个配置文件yml,里面配置了多个属性
但是在测试中
//测试配置多个值 @Value("${users}") private String[] toolArray; @Value("${users}") private List<String> toolList; @Test public void getTools(){ System.out.println(toolArray); System.out.println(toolList); }
结果输出是
不由引入集合和数组的深入研究,
发现System.out.println(); 源码中其实调用的是
进而发现调用的是toString方法
为什么可以读取list 是因为调用了List的toString方法,下面就是查看源码发现在AbstractCollection类型可以看到重写了 toString 方法
那么就有疑问,list 怎么会调用ArrayList中方法,后来调用反射得到其类型的姓名发现
查询得知 List的构造方法是ArrayList(),toString调用的是ArrayList中的toString方法