首页 > > > [新闻] Java也要有局部类型推导(var)了
看来有希望赶上Java 10。诶终于啊。
等JEP 286完成之后,Java的局部类型推导就比C#的还要神奇了…看:
List<String> strs1 = new ArrayList<String>(); // Java 5 generics
List<String> strs2 = new ArrayList<>(); // Java 7 diamond syntax
var strs3 = new ArrayList<String>(); // JEP 286 var syntax左边能推导到右边(Java 7 diamond),右边也能推导到左边(JEP 286 var),多欢乐 >_<
另外,C# 3.0里的var是个“上下文相关关键字”,也就是说只有在合适的地方写var才会被看作变量声明隐式声明类型的关键字,而其它地方(例如说作为变量名)则不算关键字而是普通标识符。JEP 286把这个设计基本找搬了,只是换了个名字叫做“reserved type name”。
========================================
另外Java 10还有希望看到Project Valhalla的完成。到时候就可以写:
var xs = new ArrayList<int>(); // Valhalla: generics over value types
好棒好棒 >_<|||
但Valhalla当前到了第三版原型的设计,把彻底的类型特化给抛弃了,改为只对value type做特化。泪奔啊。这就意味着当前的原型设计不让这样写:
public static <T, U> T make(U arg0) {
return new T(arg0);
}呜呜。
原文作者:;如有侵权,请联系管理员删除。