0
点赞
收藏
分享

微信扫一扫

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


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

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


​ 但是在测试中

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

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

结果输出是

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


不由引入集合和数组的深入研究,

发现System.out.println(); 源码中其实调用的是

Java中数组和集合输出不一致的问题_开发语言_03


进而发现调用的是toString方法

Java中数组和集合输出不一致的问题_开发语言_04


为什么可以读取list 是因为调用了List的toString方法,下面就是查看源码发现在AbstractCollection类型可以看到重写了 toString 方法

Java中数组和集合输出不一致的问题_开发语言_05


那么就有疑问,list 怎么会调用ArrayList中方法,后来调用反射得到其类型的姓名发现

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


查询得知 List的构造方法是ArrayList(),toString调用的是ArrayList中的toString方法

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


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


举报

相关推荐

0 条评论