最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDK14的新特性:instanceof模式匹配的使用

 更新時(shí)間:2020年05月09日 09:51:06   作者:flydean程序那些事  
這篇文章主要介紹了JDK 14的新特性:instanceof模式匹配的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

JDK14在2020年的3月正式發(fā)布了。可惜的是正式特性只包含了最新的Switch表達(dá)式,而Records,patterns,text blocks仍然是預(yù)覽特性。

本文要講的就是JDK14的一個(gè)預(yù)覽特性instanceof的pattern matching。 也就是說在instanceof中可以使用模式匹配了。

怎么理解呢?

我們先舉個(gè)歷史版本中使用instanceof的例子。

假如我們是動(dòng)物園的管理員,動(dòng)物園里面有Girraffe和Hippo兩種動(dòng)物。

@Data
public class Girraffe {
 private String name;
}
@Data
public class Hippo {
 private String name;
}

為了簡單起見,上面兩種動(dòng)物我們都之定義一個(gè)name屬性。

接下來我們要對兩種動(dòng)物進(jìn)行管理,傳入一個(gè)動(dòng)物,判斷一下這個(gè)動(dòng)物是不是上面兩種動(dòng)物之一,按照傳統(tǒng)的辦法,我們應(yīng)該這樣做:

 public void testZooOld(Object animal){
  if(animal instanceof Girraffe){
   Girraffe girraffe = (Girraffe) animal;
   log.info("girraffe name is {}",girraffe.getName());
  }else if(animal instanceof Hippo){
   Hippo hippo = (Hippo) animal;
   log.info("hippo name is {}",hippo.getName());
  }
  throw new IllegalArgumentException("對不起,該動(dòng)物不是地球上的生物!");
 }

上面的代碼中, 如果instanceof確認(rèn)成功,我們還需要將對象進(jìn)行轉(zhuǎn)換,才能調(diào)用相應(yīng)對象中的方法。

有了JDK 14,一切都變得容易了,我們看下最新的JDK 14的模式匹配怎么做:

 public void testZooNew(Object animal){
  if(animal instanceof Girraffe girraffe){
   log.info("name is {}",girraffe.getName());
  }else if(animal instanceof Hippo hippo){
   log.info("name is {}",hippo.getName());
  }
  throw new IllegalArgumentException("對不起,該動(dòng)物不是地球上的生物!");
 }

注意instanceof的用法,通過instanceof的模式匹配,就不需要二次轉(zhuǎn)換了。直接使用就可以了。并且模式匹配的對象還被限定了作用域范圍,會(huì)更加安全。

注意,如果你使用的最新版的IntelliJ IDEA 2020.1版本的話,語言編譯版本一定要選擇14(Preview),因?yàn)檫@個(gè)功能是preview的。

本文的例子https://github.com/ddean2009/learn-java-base-9-to-20

到此這篇關(guān)于JDK 14的新特性:instanceof模式匹配的文章就介紹到這了,更多相關(guān)JDK 14的新特性:instanceof模式匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis-generator自動(dòng)生成dao、mapping、bean配置操作

    mybatis-generator自動(dòng)生成dao、mapping、bean配置操作

    這篇文章主要介紹了mybatis-generator自動(dòng)生成dao、mapping、bean配置操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java8中接口的新特性使用指南

    Java8中接口的新特性使用指南

    接口改動(dòng)一下就要修改對應(yīng)的實(shí)現(xiàn)類,為了兼容老接口,Java8新增了默認(rèn)方法和靜態(tài)方法,下面這篇文章主要給大家介紹了關(guān)于Java8中接口新特性的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 使用ehcache三步搞定springboot緩存的方法示例

    使用ehcache三步搞定springboot緩存的方法示例

    本次內(nèi)容主要介紹基于Ehcache 3.0來快速實(shí)現(xiàn)Spring Boot應(yīng)用程序的數(shù)據(jù)緩存功能。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • IDEA下使用Spring Boot熱加載的實(shí)現(xiàn)

    IDEA下使用Spring Boot熱加載的實(shí)現(xiàn)

    本文主要介紹了IDEA下使用Spring Boot熱加載的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot 日志的配置及輸出應(yīng)用教程

    SpringBoot 日志的配置及輸出應(yīng)用教程

    Spring Boot 默認(rèn)使用 SLF4J+Logback 記錄日志,并提供了默認(rèn)配置。本文我們將重點(diǎn)介紹Spring Boot日志的配置及輸出。感興趣的小伙伴可以了解一下
    2021-12-12
  • JPA?@ManyToMany?報(bào)錯(cuò)StackOverflowError的解決

    JPA?@ManyToMany?報(bào)錯(cuò)StackOverflowError的解決

    這篇文章主要介紹了JPA?@ManyToMany?報(bào)錯(cuò)StackOverflowError的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java基礎(chǔ)之反射原理與用法詳解

    Java基礎(chǔ)之反射原理與用法詳解

    這篇文章主要介紹了Java基礎(chǔ)之反射原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了java反射的相關(guān)概念、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處

    java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處

    java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處,需要的朋友可以參考一下
    2013-03-03
  • 詳解使用spring cloud config來統(tǒng)一管理配置文件

    詳解使用spring cloud config來統(tǒng)一管理配置文件

    這篇文章主要介紹了詳解使用spring cloud config來統(tǒng)一管理配置文件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • 使用dom4j解析xml文件問題

    使用dom4j解析xml文件問題

    這篇文章主要介紹了使用dom4j解析xml文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

三亚市| 巴彦淖尔市| 宣威市| 陈巴尔虎旗| 林芝县| 文成县| 花莲县| 偏关县| 莒南县| 景泰县| 麟游县| 句容市| 尼木县| 论坛| 正定县| 阿尔山市| 瓮安县| 长沙市| 正定县| 泗阳县| 宜良县| 井陉县| 张北县| 新密市| 秦皇岛市| 焉耆| 双辽市| 罗城| 崇明县| 丹寨县| 浦北县| 钟山县| 稻城县| 宜昌市| 来凤县| 十堰市| 隆昌县| 自贡市| 海宁市| 隆德县| 德钦县|