为什么应该用钻石符号代替显式类型参数?

42

我正在使用Android Studio,我写了这个:

List<Button> buttons = new ArrayList<Button>();

我有这个消息:

明确的类型参数Button应该被<>替换

我很好奇,为什么使用钻石运算符会更好?

List<Button> buttons = new ArrayList<>();

编辑:
我完全不同意重复问题!我之前看到过那个答案,它将显式参数与根本没有参数进行比较,而我将显式参数与隐式参数进行比较!


这并不是你必须这样做,但它可以让你的代码更好看(更短)。所以我有一个反问:为什么不使用菱形操作符呢? - Pshemo
我认为对于编译器来说,更多的信息是更好的,但我真的不知道它是如何工作的... - Dan Chaltiel
1
@DanChaltiel 这会让编译器的生命更轻松,但你应该从你的编译器中要求更多和更多 :) - Sleiman Jneidi
@SleimanJneidi 哦,是的,编译器的工作效率与我的应用程序的最终速度无关,对吧? - Dan Chaltiel
2
@DanChaltiel 不,Java是一种编译语言,因此不会有性能开销。 - Sleiman Jneidi
即便如此,这是一个基本上基于个人观点的问题,因此仍然应该被关闭。 - TylerH
1个回答

51

它更加简洁,考虑以下内容

Map<String,List<String>> map = new HashMap<String,List<String>>();

比较

Map<String,List<String>> map = new HashMap<>();

我认为你会选择第二个选项


15
除了"美丽"这个词,没有任何区别吗?那我就选择它了! - Dan Chaltiel
2
@DanChaltiel 我想你也可以认为稍后更改会更容易,因为您需要对显式版本的每个使用执行更改。我的意思是例如从“String”更改为“Integer”。 - lucidbrot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接