黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 編程技術分享:Java10局部變量類型推斷

編程技術分享:Java10局部變量類型推斷

更新時間:2020-06-10 16:22:52 來源:動力節點 瀏覽2442次

在所有Java10中出現的JEP規范中,最有趣,并獲得了最多討論的,非JEP286-局部變量類型推斷(Local-Variable Type Inference)。

編程技術分享:Java10局部變量類型推斷

什么是局部變量類型推斷

在Java7中的菱形操作符允許我們這樣寫代碼:

List<String> data=new ArrayList<>();

在Java8中,你可以這樣寫:

List<String> data=new ArrayList();

右操作數能夠根據左操作數推斷出類型。Java9中,在匿名內部類中,也同樣適用(修復了該問題)。

Java10更進了一步

List<Map> data = new ArrayList();

這個代碼在Java10中,可以這樣寫:

var data = new ArrayList<Map>();

注意,這種寫法,我們在右操作數中必須確定泛型的具體參數類型,否則,Java會判定data為一個ArrayList\<Object>。

局部變量類型推斷允許開發者在申明局部變量的時候不用顯示申明變量的類型(在方法中的,初始代碼塊,for循環,if-else這樣的代碼塊中的變量),這些類型會由JDK來推斷。

我們能在什么地方使用?

下面我用一段代碼來演示,什么時候我們能使用var聲明變量:

public?class?LegalLocalVarInferenceDemo{
?//在static這樣的靜態/初始代碼塊中
?static?{
?var?anotherName?=?"Sanaulla";
?System.out.println("Hello,?"?+?anotherName);
?}
?public?static?void?main(String[]?args){
?//可以在方法局部變量中
?var?name?=?"Mohamed?Sanualla";
?System.out.println("Hello?"?+?name);
?var?data?=?new?ArrayList<Map>();
?data.add(Map.of("key1",?"value1",?"key2",?"value2"));
?data.add(Map.of("key11",?"value11",?"key22",?"value22"));
?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);
?}
?//在方法的返回值中
?public?static?Integer?someAnotherMethod(){
?System.out.println("someAnotherMethod?called");
?var?returnObj?=?12;
?return?returnObj;
?}
}

我們不能在什么地方使用?

我來創建另一個代碼案例,來演示var不能在什么地方使用:

public?class?IllegalLocalVarInferenceDemo{
?//不能在申明類的成員變量的時候
?//var?someProperty;
?//不允許作為類的構造方法參數的時候
?//?public?LocalVarInferenceDemo(var?param1){
?//?}
?public?static?void?main(String[]?args){
?//不允許作為catch的異常類型
?//?try{
?//?//some?operations
?//?}catch(var?ex){
?//?}
?}
?//不允許作為方法的參數類型聲明
?//public?static?void?someMethod(var?param1,?var?param2){
?//?System.out.println("Some?method?called");
?//}
?//不允許作為方法返回值類型聲明
?//?public?static?var?someAnotherMethod2(){
?//?System.out.println("someAnotherMethod?called");
?//?var?returnObj?=?12;
?//?return?returnObj;
?//?}
}

以上就是動力節點java培訓機構的小編針對“編程技術分享:Java10局部變量類型推斷”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲欧美日本国产综合在线 | 最新中文字幕av专区 | 欧美日韩中文字幕久久伊人 | 中日韩视频在线看免费观看 | 中文国产日韩欧美视频 | 一级夫妻录像 | 日本精品夜色视频一区二区 | 色黄大片女爽一次 | 国产三级视频在线 | 狠狠操狠狠色 | 亚洲精品影视 | 天天摸夜班摸天天碰 | 日本欧美成人 | 一机黄色片 | 亚洲综合狠狠 | 欧美国产成人免费观看永久视频 | 国产人妖ts丝丝 magnet | 666夜色666夜色国产免费看 | 日韩免费在线视频观看 | 久久亚洲欧洲日产国码 | 欧美精品在线免费 | 免费黄色大片在线观看 | 一个人看的www视频高清免费 | 亚洲国产欧美国产综合一区 | 亚洲欧美日韩高清中文在线 | 亚洲爱| 网站在线观看你懂的 | 一本大道香蕉最新在线视频 | 99精品视频不卡在线观看免费 | 午夜剧场直接免费观看 | 欧美日本高清视频在线观看 | 国产欧美亚洲精品第二区首页 | 亚洲国产婷婷综合在线精品 | 亚洲插| 日韩在线第三页 | 中文字幕在线成人免费看 | 国产午夜毛片v一区二区三区 | 国产成人精品午夜在线播放 | 色黄污在线看黄污免费看黄污 | 国产精品香蕉在线一区二区 | 一区二区国产在线播放 |