2013-12-14 92 views
2

我想知道在Java 7 钻石操作员与先前版本的Java的语言构造之间是否存在任何已知的性能差异。钻石操作员性能

基本上,它更快地使用此:

List<String> myList = new ArrayList<>() 
Map<String, Integer> myMap = new HashMap<>() 

或使用此:

List<String> myList = new ArrayList<String>() 
Map<String, Integer> myMap = new HashMap<String, Integer>() 

他们是相同的速度?

+7

也许它会编译几微秒,但分开形式没有。 – skiwi

+0

我同意这一点。我不认为结果字节码有任何不同。 –

+0

你有多少时间需要用钻石操作符编译代码,直到需要比打出类名所需的时间更长的时间? – Cephalopod

回答

5

生成的字节码是相同的。新的钻石算子纯粹是为了让程序员不必冗余地指定两次类型而实现的。

4

否定的。由于类型擦除,钻石操作员(和一般的泛型)具有与他们一直相同的运行时性能(例如,在运行时Collections只是保持对象)。