ITPub博客

首页 > > > [新闻] Java也要有局部类型推导(var)了

[新闻] Java也要有局部类型推导(var)了

作者:格伯纳 时间:2016-03-10 16:04:28 0 删除 编辑
请跳传送门:JEP 286: Local-Variable Type Inference

看来有希望赶上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);
  }

呜呜。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984197