更多課程 選擇中心
        Java培訓

        400-111-8989

        Java培訓 > Java教程  > 正文

        Spring4支持Java8的哪些新功能?

        • 發布:Java培訓
        • 來源:Java教程
        • 時間:2017-04-12 17:04

        1、Lambda表達式

        Spring代碼庫使用了大量的函數式接口,使用Java 8,我們可以使用lambda表達式編寫更干凈、更緊湊的代碼。每當期望函數式接口的對象時,我們就可以供給lambda表達式。讓我們在講下一個內容之前先了解函數式接口。

        函數式接口

        具有單個抽象方法的接口可以被稱為函數式接口。這里有一些JDK函數式接口的例子:

        Spring4支持Java8的哪些新功能?

        比較程序是函數式的,因為它只有一個抽象非Object方法。雖然它聲明了兩個抽象方法,’equals’是對應Object中public的方法,因此從計數中排除。具有Object類方法而沒有非Object方法的接口不是函數式接口。

        Spring4支持Java8的哪些新功能?

        如果接口具有抽象的非對象類方法并擴展了一個只有對象類方法的非函數式接口,則該接口是函數式的。

        Spring4支持Java8的哪些新功能?

        Spring框架函數式接口的示例:

        Spring4支持Java8的哪些新功能?
        Spring4支持Java8的哪些新功能?

        FunctionalInterface注釋可以在接口聲明的頂部使用,但它不是強制的。編譯器使用此注釋來檢測接口是否是有效的函數式接口。如果我們嘗試定義不止單個的抽象方法到接口,那么編譯器會拋出錯誤。

        Spring4支持Java8的哪些新功能?
        Spring4支持Java8的哪些新功能?

        函數描述符

        接口的函數描述符是接口單個抽象方法的方法類型。方法類型包括參數類型,返回類型和throws子句。

        例子:

        Spring4支持Java8的哪些新功能?

        如何編寫Lambda表達式

        Lambda表達式語法可以分為三部分:

        箭頭( – >)

        參數列表:

        lambda表達式可以包含零個或多個參數,例如:

        () → { System.out.println(“ No arguments”); }

        (String arg) → { System.out.println(“ One argument : ”+arg); }

        (String arg1, Integer arg2) → { System.out.println(“Two arguments : ”+arg1+” and ”+arg2); }

        表達式主體:

        可以是單個表達式或代碼塊。單個表達式將被簡單地求值和返回。

        例如:(String arg) → { System.out.println(“ One argument : ”+arg); }

        如果主體有語句塊,那么它將被評估為方法體,并且隱藏的返回語句將在塊執行后將控制返回給調用者。

        現在讓我們來看看如何使用lambda表達式:

        例1:

        Spring4支持Java8的哪些新功能?

        //使用lambda表達式

        Spring4支持Java8的哪些新功能?

        例2:

        Spring4支持Java8的哪些新功能?

        //使用lambda表達式

        Spring4支持Java8的哪些新功能?

        你可以通過Spring的回調函數使用lambda表達式。例如,使用ConnectionCallback檢索給定JDBC連接的目錄可以寫為:

        Spring4支持Java8的哪些新功能?

        2、方法引用

        函數式接口也可以使用參考方法或構造器而不調用它們的方法引用來實現。方法引用和lambda表達式是類似的,但方法引用指的是現有類的方法,而lambda定義了一個匿名方法,并將它們作為函數式接口的實例。

        在Java 8中添加了一個新的包,包含通常用于lambda表達式和方法引用的函數式接口:java.util.function。

        3、Date Time API

        Java中現有的日期和時間類有若干問題。Date和Calendar類最大的問題之一是它們不是線程安全的。開發人員不得不在處理日期處理代碼時小心并發問題。Date類也不支持國際化,因此不支持時區。開發人員必須編寫大量代碼來支持各種時區。

        Date和Time類也凸顯了API設計的差勁。java.util.Date中的月份以0開頭,日期以1開頭,年份以1900開頭。沒有統一性。這些和其他若干Date和Time類中的問題通過Java 8 中Date and Time API得到解決。

        java.time包下新的Date and Time API中,重要的類是LocalDate,LocalTime和ZonedDateTime。

        LocalDate和LocalTime

        LocalDate表示不帶時間,默認格式為yyyy-MM-dd的Date。它是一個不可變的類。我們可以使用now()方法獲取當前日期。

        創建新的LocalDate實例的例子:

        //獲取當前日期

        Spring4支持Java8的哪些新功能?

        我們還可以傳遞年月日的輸入參數來創建LocalDate實例。

        // 2016-04-01

        Spring4支持Java8的哪些新功能?

        LocalTime代表不可變的,不帶日期的時間。時間的默認格式為hh:mm:ss.zzz。

        創建新的LocalTime實例的例子:

        //獲取當前時間

        Spring4支持Java8的哪些新功能?

        // 18:30:30

        Spring4支持Java8的哪些新功能?

        默認情況下,LocalDate和LocalTime類在默認時區中使用系統時鐘。這些類還通過重載的now()方法提供對時區的支持。我們可以傳遞ZoneId在特定時區獲取日期。

        例子:

        //加爾各答(印度)的當前日期

        Spring4支持Java8的哪些新功能?

        另外,還有一個類,LocalDateTime ,它將日期和時間以默認格式yyyy-MM-ddTHH:mm:ss.zzz組合起來。

        //當前日期和時間

        Spring4支持Java8的哪些新功能?

        // 2016-04-01 13:30

        Spring4支持Java8的哪些新功能?

        ZonedDate Time

        這是一個不可變的類,表示日期和時間,包括時區信息。我們可以使用這個類的實例來表示特定事件,如世界的某些地方的會議。

        //使用系統時間和默認區域的當前時間

        Spring4支持Java8的哪些新功能?

        //使用特定時區系統時鐘的當前時間

        Spring4支持Java8的哪些新功能?

        Spring 4提供了一個轉換框架,支持作為Java 8 Date and Time API一部分的所有類。Spring 4可以采用格式為2016-09-10的字符串,并將其轉換為Java 8 LocalDate的實例。Spring 4還支持格式化Java 8日期時間字段,用@DateTimeFormat注釋。@DateTimeFormat聲明字段應該格式化為日期時間。

        Spring4支持Java8的哪些新功能?

        4、重復注釋

        在Java 8之前,不允許將相同類型的多個注釋附加到聲明或類型(例如類或方法)。作為解決方法,開發人員必須將它們組合到單個容器注釋中。

        舉例:

        Spring4支持Java8的哪些新功能?

        重復注釋允許我們重寫相同的代碼,而不顯式地使用容器注釋。雖然此處未使用容器注釋,但Java編譯器負責將兩個注釋包裝到容器中:

        舉例:

        Spring4支持Java8的哪些新功能?

        定義重復注釋

        要定義重復注釋,標記可以使用@Repeatable重復的注釋,并創建一個屬性是重復注釋類型的數組的注釋。

        步驟1:聲明可重復注釋類型:

        Spring4支持Java8的哪些新功能?

        步驟2:聲明容器注釋類型。

        Spring4支持Java8的哪些新功能?

        完全實現如下:

        Spring4支持Java8的哪些新功能?

        要在運行時獲取注釋信息,用@Retention(RetentionPolicy.RUNTIME)注釋Roles。

        檢索注釋

        getAnnotationsByType()或getDeclaredAnnotationsByType()是用于訪問注釋的Reflection API中的新方法。

        注釋也可以使用getAnnotation()或getDeclaredAnnotation()通過容器注釋來訪問。

        5、結論

        Spring 4仍然使用Java 6和Java 7運行。由于Spring使用了大量的函數式接口,使用Java 8和Spring 4,你將能夠使用lambda表達式——擁有函數式接口,并且可以編寫更干凈和緊湊的代碼。

        新的 Date and Time API解決了java.Util.Date類的長期問題,并引入了許多新的類,如LocalDate,LocalTime,這將使得日期和時間的編程更愉快。你已經采用Java 8與Spring 4了嗎?請與我們分享各位的反饋。

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:Java8這10個特性你一定要知道
        下一篇:全面解析Java8觀察者模式
        12大要點讓你的Java開發所向披靡~

        12大要點讓你的Java開發所向披靡~

        學習Java最好的12本免費在線電子書

        學習Java最好的12本免費在線電子書

        Java常用日志框架介紹

        Java常用日志框架介紹

        一篇文章了解RPC框架原理

        一篇文章了解RPC框架原理

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        貴州省

        福建省

        • 達內廈門軟件園中心
        廣西省

        海南省

        国产高清情侣视频2019年,限制电影福利在线观看,23伊人大香蕉 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>