java10新特性局部变量类型推断
01java10新特性局部变量类型推断
很多人抱怨Java是一种强类型,需要引入大量的样板代码。很明显类型声明往往被认为是不必要的。JDK10之前的Java代码中,声明一个变量是非常繁琐的:Stringstrabc;longl10L;booleanbtrue;ArrayListStringlistnewArrayList();StreamStringstreamlist。stream();
许多流行的编程语言都已经支持某种形式的局部变量类型推断,如JS(var)。JDK10局部变量类型推断的使用
JDK10可以使用var进行局部变量类型推断。varstrabc;推断为字符串类型varl10L;推断为long类型varflagtrue;推断为boolean类型varlistnewArrayListString();推断为ArrayListStringvarstreamlist。stream();推断为StreamString局部变量类型推断使用场景局部变量循环内publicclassdemo01var{varx10;成员变量不能使用varpublicstaticvoidmain(String〔〕args){vara1;varstrabc;varflagtrue;varlistnewArrayListString();list。add(aa);varstreamlist。stream();for(vars:list){System。out。println(s);}for(vari0;i10;i){varx5;}}}局部变量类型推断不能使用场景成员变量方法参数方法返回类型publicclassdemo01var{varx10;成员变量不能使用varpublicstaticvoidmain(String〔〕args){}参数不能使用varpublicstaticvoidtest01(vara){}方法返回类型不能使用varpublicstaticvartest02(){returntrue;}}局部变量类型推断注意事项var并不是一个关键字,可以作为标识符,这意味着可以将一个变量、方法、包名写成var。不过一般情况下不会有人这么写的,因为这本身就违反了普遍的命名规范。var并不是一个关键字,而是一个保留的类型名称,这意味着可以将一个变量、方法、包名写成var。publicstaticvoidtest03(){varvar10;System。out。println(varvar);}var声明变量的时候必须赋值、不能用于声明多个变量的情况。var不能用来声明没有赋值的变量、不能用于声明多个变量的情况。publicstaticvoidtest04(){varxnull;不行,推断不出到底是什么类型intx1,y2;可以varm1,n2;不行}小结
我们了解了JDK10之前定义变量是比较繁琐的,通过JDK10的局部变量类型推断定义变量更加的简单。
如何进行局部变量类型推断?将变量名左边的类型替换成var即可vari3;
什么情况下可以使用局部变量类型推断?局部变量循环中的变量