双括号初始化导致的诡异问题

双括号初始化导致的诡异问题_第1张图片
明明是同样的类型,却编译不通过!最开始我以为是泛型的问题,反复查找资料和尝试后,最终定位到是双括号导致的!
参考资料:Java:双括号初始化 /匿名内部类初始化法
阅读资料后可知,第一层括号实际上是产生了一个HashMap的子类所以可以解释为什么图上的代码会编译错误因为两个HashMap的类型不一致,而第二层为代码块所以可以调用类内部方法

总结:千万不要再使用双括号初始化,使用new Object()和代码块代替即可!双括号会带来非常多的class文件以及OOM风险为了节省一两行代码得不偿失!

你可能感兴趣的:(JAVA)