从Java 7开始,允许使用菱形运算符以避免重复类型参数。例如
List<String> myList = new ArrayList<String>();
变为
List<String> myList = new ArrayList<>();
为什么使用静态方法调用时不允许使用相同的表示法?例如,在创建SettableFuture时,我想调用
SettableFuture<String> myFuture = SettableFuture.<>create();
而不是
SettableFuture<String> myFuture = SettableFuture.<String>create();
我知道可以使用原始方法调用
SettableFuture<String> myFuture = SettableFuture.create();
但这与
不同List<String> myList = new ArrayList();
我的问题:我应该在调用泛型静态方法时使用raw方法调用还是重复type参数?
答案 0 :(得分:0)
通过构造函数创建Java对象。因为这是正常行为,所以Java开发人员将空diamon创建为糖语法功能。
对象实例化的静态方法不应该像构造函数那样频繁发生。它们用于许多其他东西。因此,语法不会计划检测您尝试做的是创建需要泛型类型的对象。
修改强>
我错了。静态方法中的类型也有语法糖(省略了diamon),create()
比我想象的更常见。
我的回答:我宁愿省略diamon,因为变量中已经指定了类型,这样可以避免代码中的信息冗余。