国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Spring 4 支持的 Java 8 特性

Spring 4 支持的 Java 8 特性

2020-08-30 11:23落葉的博客 Java教程

Spring 框架 4 支持 Java 8 語言和 API 功能。在本文中,我們將重點(diǎn)放在 Spring 4 支持新的 Java 8 的功能。最重要的是 Lambda 表達(dá)式,方法引用,JSR-310的日期和時間,和可重復(fù)注釋。下面跟著小編一起來看下吧

spring 框架 4 支持 java 8 語言和 api 功能。在本文中,我們將重點(diǎn)放在 spring 4 支持新的 java 8 的功能。最重要的是 lambda 表達(dá)式,方法引用,jsr-310的日期和時間,和可重復(fù)注釋。

lambda 表達(dá)式

spring 的代碼庫使用了 java 8 大量的函數(shù)式接口,lambda 表達(dá)式可以用來編寫更干凈和緊湊的代碼。每當(dāng)出現(xiàn)函數(shù)式接口的對象的預(yù)期時我們便可以提供一個 lambda 表達(dá)式。讓我們進(jìn)一步繼續(xù)之前首先學(xué)習(xí)函數(shù)式接口。

函數(shù)式接口

有單一抽象方法的接口被稱為函數(shù)式接口。下面是 jdk 中函數(shù)式接口的一些例子:

Spring 4 支持的 Java 8 特性

Spring 4 支持的 Java 8 特性

Spring 4 支持的 Java 8 特性

comparator 是僅具有一個抽象的非對象方法的函數(shù)。盡管聲明了兩個抽象方法,因?yàn)?equals 是對應(yīng)于對象的公共方法所以從計(jì)數(shù)里排除了。其中有一個對象類方法且沒有非對象方法的接口并不是函數(shù)式接口。

Spring 4 支持的 Java 8 特性

一個接口如果有一個抽象的非對象類方法并且擴(kuò)展自具有唯一對象類方法的非函數(shù)式接口,則稱為函數(shù)式接口。

Spring 4 支持的 Java 8 特性

spring 框架的函數(shù)式接口的例子:

Spring 4 支持的 Java 8 特性

Spring 4 支持的 Java 8 特性

@functionalinterface 注解可以在接口聲明的頂部聲明中被使用,但這并不是必需的。此注解用于由編譯器來檢測該接口是不是有效的函數(shù)式接口。如果我們試圖在接口里定義多個單一抽象方法,編譯器將拋出一個錯誤。

Spring 4 支持的 Java 8 特性

Spring 4 支持的 Java 8 特性

函數(shù)描述符

接口的函數(shù)描述符是該接口的一個抽象方法的方法的類型。該方法類型包括參數(shù)類型,返回類型和 throws 子句。

例:

Spring 4 支持的 Java 8 特性

如何編寫 lambda 表達(dá)式

lambda 表達(dá)式的語法可以拆分成三部分:

  • 一個箭頭 (–>)
  • 參數(shù)列表: 一個 lambda 表達(dá)式可以包含0個或多個參數(shù) 例: () → { 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); }
  • 表達(dá)式體: 可以是單個表達(dá)式或代碼塊。單個表達(dá)式將被簡單地求值并返回。 例: (string arg) → { system.out.println(“ one argument : ”+arg); } 如果表達(dá)式體(body)中存在語句塊,那么它將被判定為方法體,并且在塊執(zhí)行后隱藏的返回語句將控制權(quán)交給調(diào)用者。

現(xiàn)在我們看一下如何使用 lambda 表達(dá)式:

例1:

Spring 4 支持的 Java 8 特性

// 使用 lambda 表達(dá)式

Spring 4 支持的 Java 8 特性

例2:

Spring 4 支持的 Java 8 特性

//使用 lambda 表達(dá)式

Spring 4 支持的 Java 8 特性

你可以通過 spring 的回調(diào)函數(shù)使用 lambda 表達(dá)式。例如,用一個 connectioncallback 檢索給定 jdbc 連接的列表,可寫成如下語句: jdbctemplate.execute(connection -> connection.getcatalog())

方法引用

函數(shù)式接口也可以使用方法引用來實(shí)現(xiàn),引用方法或構(gòu)造函數(shù)但并不調(diào)用它們。方法引用和 lambda 表達(dá)式是類似的,但方法引用是指現(xiàn)有類的方法,而 lambda 定義了一個匿名方法,并將其作為函數(shù)式接口的實(shí)例。

在 java 8 中一個新增包中包含了常用于 lambda 表達(dá)式和方法引用的函數(shù)式接口:。

date time api

在 java 中現(xiàn)有的 date 和 time 類存在多個問題。date 和 calendar 類的最大問題之一是它們不是線程安全的。在編寫日期處理代碼時開發(fā)人員不得不特別小心并發(fā)問題。date 類也不支持國際化,因此不支持時區(qū)。開發(fā)人員必須編寫大量的代碼來支持不同的時區(qū)。

date 和 time 類也顯現(xiàn)出不佳的 api 設(shè)計(jì)。java.util.date 中的月從0,日從1,年從1900開始。缺少一致性。現(xiàn)在這些與 date 和 time 類的其它幾個問題在 java 8 中的新 date 和 time api 中已解決。

在 java.time 包下新的 date 和 time api 的重要的類是 localdate,localtime 和 zoneddatetime。

localdate 和 localtime

localdate 表示日期時的默認(rèn)格式為 yyyy-mm-dd,并沒有時間。這是一個不可變類。我們可以使用 now() 方法獲得的當(dāng)前日期。

新建 localdate 實(shí)例的例子:

//獲取當(dāng)前日期

Spring 4 支持的 Java 8 特性

我們也可以通過對年,月,日的輸入?yún)?shù)來新建 localdate 實(shí)例。

// 2016年4月1日

Spring 4 支持的 Java 8 特性

localtime 表示無日期的時間,是不變的。時間的默認(rèn)格式為 hh:mm:ss.zzz。

新建 localtime 實(shí)例的例子:

//獲取當(dāng)前時間

Spring 4 支持的 Java 8 特性

// 18:30:30

Spring 4 支持的 Java 8 特性

默認(rèn)情況下,localdate 和 localtime 類使用默認(rèn)時區(qū)的系統(tǒng)時鐘。這些類還提供了通過重載 new() 方法對修改時區(qū)的支持。可以通過傳遞 zoneid 來獲得一個特定時區(qū)中的日期。

例子:

// 當(dāng)前本地日期加爾各答(印度)

Spring 4 支持的 Java 8 特性

此外,還有一個類,localdatetime 組合了日期和時間,默認(rèn)格式為 yyyy-mm-ddthh:mm:ss.zzz·。

//當(dāng)前日期和時間

Spring 4 支持的 Java 8 特性

// 2016-04-01 13:30

Spring 4 支持的 Java 8 特性

zoneddatetime

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

// 當(dāng)前時間使用系統(tǒng)的時間和默認(rèn)區(qū)域

Spring 4 支持的 Java 8 特性

// 當(dāng)前時間使用特定時區(qū)的系統(tǒng)時鐘

Spring 4 支持的 Java 8 特性

spring 4 提供了一個轉(zhuǎn)換框架,支持做為 java 8 日期和時間 api 一部分的所有類。spring 4 可以使用一個 2016-9-10 的字符串,并把它轉(zhuǎn)換成 java 8 localdate 的一個實(shí)例。spring 4 還支持通過 @datetimeformat 注解格式化 java 8 date-time 字段。@datetimeformat 聲明一個字段應(yīng)該格式化為日期時間。

Spring 4 支持的 Java 8 特性

重復(fù)注解

在 java 8 之前,將相同類型的多個注釋加到聲明或類型(例如一個類或方法)中是不允許的。作為一種變通方法,開發(fā)人員不得不將它們組合在一起成為單個容器注解。

例:

Spring 4 支持的 Java 8 特性

重復(fù)注解允許我們重寫相同的代碼并不需顯式地使用容器注解。雖然容器注解沒有在這里使用的,java 編譯器負(fù)責(zé)將兩個注解封裝成一個容器:

例:

Spring 4 支持的 Java 8 特性

定義重復(fù)注解

定義一個重復(fù)注解,通過可重復(fù)使用的 @repeatable 注解來進(jìn)行標(biāo)注,或創(chuàng)建一個具有重復(fù)注解類型系列屬性的注解。

第1步:聲明重復(fù)注解類型:

Spring 4 支持的 Java 8 特性

第2步:聲明容器注解類型。

Spring 4 支持的 Java 8 特性

全部的實(shí)現(xiàn)如下所示:

Spring 4 支持的 Java 8 特性

為了獲得在運(yùn)行時的注解信息,通過 @retention(retentionpolicy.runtime) 注釋即可。

檢索注解

getannotationsbytype() 或 getdeclaredannotationsbytype() 是用于訪問注解反射 api 中的新方法。

注解還可以通過它們的容器注解用 getannotation() 或 getdeclaredannotation() 進(jìn)行訪問。

結(jié)論

spring 4 還可運(yùn)行在 java 6 和 java 7 中。由于 spring 使用了很多的函數(shù)式接口,用 java 8 和 spring 4,你將能夠使用 lambda 表達(dá)式和函數(shù)式接口,并可寫出更干凈、緊湊的代碼。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持服務(wù)器之家!

原文鏈接:http://www.cnblogs.com/wangyayun/p/6585518.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲成年人网址 | 久久这里只有精品久久 | 一级片在线观看 | 欧美日韩专区 | 国产精品久久久久久久久久久久久 | 欧美日韩中文 | av毛片免费 | 日韩精品一区二区三区在线播放 | 一 级 黄 色 片免费网站 | 夜夜嗨av色一区二区不卡 | 久久久久久国产精品mv | 成人免费视频网址 | 午夜影院在线观看 | 成人av一区二区三区 | 精品在线一区二区三区 | 97久久精品| 精品国产999 | 亚洲国产精品激情在线观看 | 福利网址| 媚黑视频 | av影音 | av资源在线 | 日日夜夜精品免费视频 | 毛片免费观看视频 | 91在线看黄| 亚洲一区二区视频在线观看 | 精品综合99久久久久久www | 国产精品永久 | 久久国产一区二区 | www.亚洲成人 | 91精品国产综合久久香蕉 | 一级毛片在线播放 | 日韩电影免费在线观看中文字幕 | 狠狠插狠狠操 | 亚洲视频观看 | 免费激情网站 | 日韩a在线 | 午夜在线电影 | 91视频网 | 午夜精品久久久久久久星辰影院 | 97色伦97色伦国产欧美空 |