日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android java 8_四个库,让你在 Android 中启用 Java 8 功能

發布時間:2023/12/4 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android java 8_四个库,让你在 Android 中启用 Java 8 功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 8 的推出引入很多革命性變化,加入了函數式編程的特征,使基于行為的編程成為可能,同時簡化了各種設計模式的實現方式,是 Java 有史以來最重要的更新。

自 Android N 之后,由于 Jack&Jill 編譯工具鏈的存在,Java 8 的一些語言功能終于得到了支持。雖然還存在一些限制,如,新編譯器附帶的數據綁定支持庫無法使用,以及注釋支持受限等,但這完全不足以否定 Java 8 中存在的其他先進功能。在這篇文章中,作者介紹了在 Android 中引入 Java 8 功能的四個庫,希望它們對你有幫助。

文章如果有翻譯不到位的地方,歡迎大家進行指正。喜歡的也不要忘了點贊、打賞、收藏哦~

Java 8 在 Android M(6.0)及更低版本中的功能

Java 8 的發布引入了一些新特性。在所有功能中較為重要的有 lambda 表達式,方法引用,Stream API 和新的時間日期 API。

目前,Jack&Jill 編譯工具鏈還處于早期開發階段,它比較容易與 Java 7 保持同步。另外,很幸運的是,現在有幾款庫還能將 Android 中 的 Java 8 移植到更低版本的編譯器中。讓我們來看看它們是如何發揮作用的。

Lambda 表達式

伴隨 Java 8 的發布而發布的 lambda 表達式,允許你使用參數傳遞代碼塊。它們可以用于代替類的匿名實例,例如,對單擊按鈕時執行的操作進行定義。下面我演示了使用匿名類和 lambda 表達式在按鈕上設置 onClick 監聽器:

// Anonymous class approach:

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

// onClick action here

}

});

// Lambda expresssion approach:

button.setOnClickListener(view -> {

// onClick action here

});

用 Retrolambda 實現 Java 6 和 7 中的 Lambda 表達式功能

使用?Retrolambda 能很快實現 Java 6 和 Java 7中的Lambda 表達式功能,將它應用在 Android 上也是一樣。Retrolambda 能轉換 Java 8 編譯的字節碼,以便它在更低版本的 Java 中運行此代碼,而不需要任何附加的依賴關系。

要在 Android Studio 項目中使用 retrolambda,需要將下列代碼添加到項目級別的 build.gradle 文件中:

buildscript {

repositories {

jcenter()

mavenCentral()

}

dependencies {

classpath 'com.android.tools.build:gradle:2.1.2'

classpath 'me.tatarka:gradle-retrolambda:3.2.5'

}

}

...

模塊級 build.gradle 文件應包含以下突出顯示的代碼行:

apply plugin: 'com.android.application'

apply plugin: 'me.tatarka.retrolambda'

android {

compileSdkVersion 23

buildToolsVersion "24.0.1"

defaultConfig {

applicationId "com.example.lambdas"

minSdkVersion 16

targetSdkVersion 23

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

}

遵循以上步驟,你已經能夠成功地在 Android上啟用 Java 8 的其中一項功能。

方法引用(Method References)

方法引用可以很方便地與 lambda 表達式一起使用,以簡化語法。例如,如果一個 lambda 表達式主體包含一個類方法調用,它可以替換為一個方法引用:

Arrays.sort(new Integer[] {1, 2, 3},

(first, second) -> first.compareTo(second));

Arrays.sort(new Integer[] {1, 2, 3}, Integer::compareTo);

參數會自動提供以匹配方法簽名(method signature)。

這里存在三種::運算符用法:

object::instanceMethod

Class::staticMethod

Class::instanceMethod

你可點擊此處了解更多有關方法引用和構造函數引用的信息。

如果你已經使用?retrolambda 庫啟用了 lambda 表達式,方法引用此時也能正常運行,因為此功能是包含在內的。如果沒有,請你參考上一節的內容。

Stream API

Java 8 另一個了不起的語言特性就是 Stream API,Stream 表示抽象層,允許開發人員以聲明方式處理底層數據。它的另一個好處就是能對 Stream 采取并行執行操作,這有利于開發人員有效地處理大量數據,而不必為并發和線程管理擔心。

例如,我們有一個數字列表,需要過濾出小于 10 的數字,然后返回其余的排序列表。使用 Stream API,事代碼表現更美觀:

List numbers = new ArrayList<>();

numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));

List large_number = numbers.stream()

.filter(num -> num >= 10)

.sorted()

.collect(Collectors.toList());

這僅是 Stream API 提供的一個簡單示例。 有關 Java 中的 Stream 的更多信息,請參閱 Java 8 中的 Stream API。

在 Android 中,我們有兩個庫,可以從 Stream API 中選擇,我們來看下:

Lightweight-Stream-API

Lightweight-Stream-API 庫將 Stream API 反向運行到 Java 7,并通過使用迭代器重寫 API 來降低版本。該庫在原始 Java 8 實現中提供了許多 Stream 操作符,其中有一些是新的,如:sortBy,groupBy,chunkBy,sample,slidingWindow 等。

將庫包含到 Android 項目中是為了給 build.gradle 文件中的依賴項添加單獨的一行:

dependencies {

...

compile 'com.annimon:stream:1.1.3'

...

}

由于該庫已經重新實現 Stream API 的方式,一些語法會與原始的 Stream 實現不同,并且并行執行也被省略。 更多信息,請參閱 Github 上的庫頁面。

streamsupport

第二個將 Stream API 從 Java 8 回退到更低版本的庫就是?streamsupport 庫。與?Lighweight-Stream-API 相比,streamsupport 除了具有并行執行功能和 Java 9 的增強功能外,還有一些其他的功能,如,Java 8 的功能接口或可選模式。

為了在您的項目中使用 streamsupport 庫,請將以下依賴項添加到 build.gradle 文件中:

dependencies {

compile 'net.sourceforge.streamsupport:streamsupport:1.5.2'

compile 'net.sourceforge.streamsupport:streamsupport-cfuture:1.5.2'

compile 'net.sourceforge.streamsupport:streamsupport-atomic:1.5.2'

compile 'net.sourceforge.streamsupport:streamsupport-flow:1.5.2'

compile 'net.sourceforge.streamsupport:streamsupport-literal:1.5.2'

}

新時間日期 API

Java 8 之前的版本不太支持日期和時間的設置。雖然也有幾個支持的 API,但它們各自都存在問題。為解決這些問題,Java 8 帶來了新時間日期,你可以點擊此處了解更多相關信息。

ThreeTen Android Backport

雖然 Android 不支持 Java 8 中的時間日期 API,但一個名為 ThreeTen Android Backport 的庫可以提供相同的功能。

使用之前,請將以下行添加到 build.gradle 文件中:

compile 'com.jakewharton.threetenabp:threetenabp:1.0.4'

結論

在這篇文章中,我介紹了在 Android 中引入 Java 8 功能的四個庫。 使用這些庫,您可以在 Android 中使用 lambda 表達式,方法引用,Stream API 或新日期時間 API,而無需遷移到新的 Jack&Jill 編譯器工具鏈,同時還能保持與以前版本的 Android 和 Java 的兼容性。

總結

以上是生活随笔為你收集整理的android java 8_四个库,让你在 Android 中启用 Java 8 功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。