java jep_Java 10 – JEP 286:局部变量类型推断
java jep
Java 10即將發(fā)布,RC Build可在此處獲得 。 可在此處找到此發(fā)行版的目標(biāo)功能。 在針對Java 10的所有JEP中,開發(fā)人員社區(qū)中最有趣且最受關(guān)注的是286:Local-Variable Type Inference 。
什么是局部變量類型推斷?
我們在Java 8中看到了Diamond運(yùn)算符,它允許我們編寫
List<Map data = new ArrayList<Map();如
List<Map data = new ArrayList();根據(jù)LHS的類型推斷RHS的類型。 盡管在Java 9中已修復(fù)的匿名內(nèi)部類中,此方法確實(shí)起作用。
Java 10更進(jìn)一步,說明如下:
List<Map data = new ArrayList();可以寫成:
var data = new ArrayList();局部變量類型推斷允許開發(fā)人員跳過與局部變量(在方法定義,初始化塊,for循環(huán)和其他塊(如if-else中定義的變量)中定義的變量)關(guān)聯(lián)的類型聲明,并且由JDK推斷類型。
在哪里可以使用?
讓我創(chuàng)建一個示例類,以顯示使用局部變量推斷var的不同方法:
public class LegalLocalVarInferenceDemo{//in a static/instance initialization blockstatic {var anotherName = "Sanaulla";System.out.println("Hello, " + anotherName);}public static void main(String[] args){//as a local variablevar name = "Mohamed Sanualla";System.out.println("Hello " + name);var data = new ArrayList();data.add(Map.of("key1", "value1", "key2", "value2"));data.add(Map.of("key11", "value11", "key22", "value22"));data.add("hello");System.out.println(data);System.out.println("********** As iteration variable in enhanced for-loop ***************");for ( var object : data){System.out.println(String.format("%s of type %s", object, object.getClass().getName()));}System.out.println("********** As looping index in for-loop ***************");for ( var i = 0 ; i < data.size(); i++ ){var object = data.get(i);System.out.println(String.format("%s of type %s", object, object.getClass().getName()));}System.out.println("********** As a return value from another method ***************");var anInteger = someAnotherMethod();System.out.println("someAnotherMethod returned " + anInteger);}//As a return value in a methodpublic static Integer someAnotherMethod(){System.out.println("someAnotherMethod called");var returnObj = 12;return returnObj;}}無法使用的地方?
讓我創(chuàng)建另一個示例類,該類顯示如何無法使用var :
public class IllegalLocalVarInferenceDemo{//Not permitted in class fields//var someProperty;//Not allowed as parameter for constructor// public LocalVarInferenceDemo(var param1){// }public static void main(String[] args){//Not allowed in catch parameter// try{// //some operations// }catch(var ex){// }}//Not permitted below//public static void someMethod(var param1, var param2){// System.out.println("Some method called");//}//Not permitted in method return type// public static var someAnotherMethod2(){// System.out.println("someAnotherMethod called");// var returnObj = 12;// return returnObj;// } }樣例代碼
該示例可以在GitHub上找到
翻譯自: https://www.javacodegeeks.com/2018/03/java-10-jep-286-local-variable-type-inference.html
java jep
總結(jié)
以上是生活随笔為你收集整理的java jep_Java 10 – JEP 286:局部变量类型推断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word中的图片怎么保存电脑图片如何保存
- 下一篇: 年轻人靠网文搞钱月入10万写网文月入10