趁着Java10发布的时候,小编将整理的有用的学习资料分享给大家,希望能有帮助。 下面说说刚发布的Java10.
Alt text
技术的进步一直很快,我们还在用Java7,Java10就已经推出了。
就在上周3月20号,带有109项新特性的Java10发布了,今天介绍它其中一个主要特性,Local-variable type inference
有JS开发经验的同学对 var 肯定不陌生,Java10也引入了这个语法,
var bean = new ArrayList<Bean>();
作为一名Java撸手,我们经常要写冗长的变量声明语句,特别是在企业级代码中,为了区分功能和模块,经常会造几个单词拼起来的类,比如下面这样
InternationalAdvBean bean = new InternationalAdvBean()
因为Java是强类型语言,在Java10之前都不能避免写大段的变量声明代码。然而有其他高级语言开发经验的人会明白,其实这部分类型声明可以让编译器替我们推测。
Oracle 考虑到了这点,在最新的版本中引入了这个特性,让编译器替开发者推测变量的类型。而免去前面的强类型声明。
这个改动带来很多好处,举个例子,在企业级开发中我们经常会遇到一些坑爹的类,因为跟具体业务需求有关所以类名一言难尽… 而Java10会在编译时替我们猜出变量的类型,就像这样
var intal = new InternationalAdvBean();
var local = new LocalAdvBean();
var connection = NetworkManager.getConnection();
代码是不是变的简洁很多? 不过新的语法糖也带来了一些问题,比如上面第三个语句,我们无法一下子就得知connenction的类型,只能通过查看getConnection方法或者通过IDEA来得知它的类。
当然这个语法不是万能的,只能用在局部变量。
· 局部变量 正如这个feature的名字所示,它只能用在声明局部变量中。更准确的说是有构造器的局部变量声明。像下面这样是不行的
var value;
value = "foo";
当然,如果作为方法类型的返回值,也是不可以,
private var getString(){}
· 循环 除了局部变量,用来作为for循环的变量声明也是允许的,
for(var name : nameList) {
println("name: " + name);
}
这种限制的设定,主要是考虑变量在全局范围内可能被意外修改,如String被意外赋值为int,导致程序错误。
Java10 还有其他很多的特性,如果你感兴趣的话,可以点击下方链接,查看官方的文档说明。新的feature很多,这里就不一一介绍了。
Java10新特性