導航:首頁 > 編程語言 > java8android

java8android

發布時間:2023-01-19 11:22:48

『壹』 如何在android mole中使用java 8的新特性,比如Lambda

在Java8之前,Java並不支持Lambda表達式,而Android目前最新也才支持到Java7特性,所以在Android中使用Lambda表達式需要進行一些處理,將Lambda表達式編譯成Android可以「理解」的方式。 Retrolambda是一個能夠讓我們在Java7中使用Lambda的工具,再通過gradle-retrolambda插件,在gradle編譯過程中將會: 將Java8中的 javac編譯 Java8的代碼; 將產生的Java8的位元組碼轉換為Java6的位元組碼; 重新打包class。 build.gradle配置文件如下: buildscript { repositories { mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } dependencies { classpath 'me.tatarka:gradle-retrolambda:1.2.+' }

『貳』 如何評價Android N 里「改進的 Java 8 支持」

「改進的 Java 8 支持:我們非常興奮地將 Java 8 語言特性帶到 Android 上。使用 Android 的 Jack 編譯器,現在你可以使用許多流行的 Java 8 語言特性,包括 lambda 等,並且向前可以支持到 Android Gingerbread 上使用。新的特性幫助減少樣板代碼。例如,在需要提供事件監聽器的地方可以使用 lambda 代替匿名內部類。一些 Java 8 語言特性,如默認方法和靜態方法、stream、函數式介面,現在都可以在 Android N 及以上版本中使用。使用 Jack 編譯器,我們期望在保持向前兼容的同時更緊地跟上 Java 語言。」

『叄』 Android什麼時候支持Java8

Android API 21才支持Java7,就算之後的版本可以支持了Java8,你也得使用舊版本Java API開發,Android版本分裂就是這么惡心,要等用戶手頭上設備都升級到5.0,估計得是幾年後的事了

『肆』 如何在 Android 中使用 Java8

目前只能使用Android的部分特性。例如lambda表達式

在mole的build.gradle文件裡面添加如下代碼

applyplugin:'me.tatarka.retrolambda'

在android節點添加如下代碼

compileOptions{
.VERSION_1_8
.VERSION_1_8
}

就能使用lambda表達式了

『伍』 如何在Android Studio中使用java 8

、下載Java8的jdk進行安裝
2、然後在Andstudio中打開Project Structure 設置一下JDK的路徑,如下圖:

3、在項目中bulid.gradle中 將jdk版本更改為JavaVersion.VERSION_1_8
如下圖:

4、到這時候呢 已經可以在項目中書寫 Lambda語法 而不會報錯了,但是 當我們編譯的時候還是會報 class file for java.lang.invoke.MethodType not found #23 這個錯,
這時候我們只要在工程的bulid.gradle中的buildscript里去配置下:classpath 'me.tatarka:gradle-retrolambda:3.2.4' 如圖:

5、最後在app的bulid.gradle中加上 apply plugin: 'me.tatarka.retrolambda' 就OK了,如圖:

『陸』 Android什麼時候支持Java8

JDK是 Java 語言的軟體開發工具包,主要用於移動設備、嵌入式設備上的java應用程序。JDK是整個java開發的核心,它包含了JAVA的運行環境,JAVA工具和JAVA基礎的類庫。

2014-03-18發布jdk1.8 其新特性:
Java 8允許我們給介面添加一個非抽象的方法實現,只需要使用 default關鍵字即可。
新增lambda表達式
提供函數式介面
Java 8 允許你使用 :: 關鍵字來傳遞方法或者構造函數引用
我們可以直接在lambda表達式中訪問外層的局部變數。

Android目前新版本6支持的jdk是 java 7

『柒』 如何在Android Studio中使用java 8

如果你首先是一個Java開發人員,你可能認為Android將完全支持當前版本的Java是公理的。你會錯了。部分原因是由於Oracle的訴訟,部分原因是它不是他們的首要任務,Android在採用當前的Java SE版本時速度很慢。使用Android Nougat(7.0),Android團隊已開始轉向Java(Java 8)的當前版本,但部分和增量。好消息是,Android庫的許多Java兼容部分顯然是基於來自OpenJDK 8的源代碼,因此令人討厭的小不一致的數量應該隨著時間的推移而減少。注意,為了編譯Android
Nougat,您必須安裝Java 8 SDK,即使您沒有使用任何這些功能!
「Jack」(Java編譯工具包?)是一個新的工具鏈,它將Java代碼編譯成自己的格式 - 沒有更多的類文件到Dex翻譯。這應該更快,但也意味著工具像findbugs讀取.class文件將不再工作,沒有額外的編譯步驟。

要使用Jack,您必須具有Android Studio 2.1或更高版本以及Build Tools軟體包24或更高版本。並且必須在build.gradle或模塊設置中將Source和Target編譯級別設置為1.8。另外,從當前預覽,您必須手動添加jackOptions使能條目到build.gradle,在defaultConfig條目內:
android {
defaultConfig {
// Other defaults here...
// Enable 'jack'
jackOptions {
enabled true
}
}
// And if you prefer to set these manually:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

『捌』 如何在android mole中使用Java 8的新特性,比如Lambda

概述

lambda和Stream表達式是java8引入的新特性,要理解lambda表達式,其中最重要的概念就是函數式介面(functional interface),而在Android中有很多這種介面,如點擊事件OnclickListener等。簡單來說,函數式介面是只包含一個抽象方法的介面。比如Java標准庫中的java.lang.Runnable和java.util.Comparator都是典型的函數式介面。

來看一下lanbda語法,以java.util.Comparator介面為例

使用Rxjava的朋友,肯定對這種語法很熟悉。lanbda更多特性參照
Java 8 Tutorial

retrolambda

在android 中磨人是不支持java8的,那麼該如何使用呢,在android中我們必須藉助一個插件retrolambda@[Github],該插件將Java8中的lambda表達式特性兼容到java 5。
引入步驟

download and install java8

在project的build.gradle中加入

classpath 'me.tatarka:gradle-retrolambda:3.2.0'11

完整代碼:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
}
}

allprojects {
repositories {
jcenter()
}
}

在mole的build.gradle中使用插件

apply plugin: 'me.tatarka.retrolambda'11

在android節點下加入環境支持

android{
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}123456123456

完整代碼:

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
applicationId "com.bobomee.android.lambda.sample"
minSdkVersion 15
targetSdkVersion 22
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
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'

}

Stream

同時Stream API讓我們對於集合的操作也變得十分的簡潔

Stream.of(/* array | list | set | map | anything based on Iterator/Iterable interface */)
.filter(..)
.map(..)
...
.sorted()
.forEach(..);
Stream.of(value1, value2, value3)...
Stream.ofRange(0, 10)...1234567812345678

具體可參考:Lightweight-Stream-API@[Github]
Java 8 Stream on Android

測試

imageView.post(()-> Toast.makeText(this,"lambda-test",Toast.LENGTH_LONG).show()); 11

這里模擬了Runnable介面,如果打出toast,則說明引入成功了,否則clean或者同步一下工程即可。

閱讀全文

與java8android相關的資料

熱點內容
公路商店app標簽選什麼 瀏覽:337
linuxoracle命令行登錄 瀏覽:224
android深度休眠 瀏覽:169
php微信開發例子 瀏覽:843
醫得app登錄密碼是什麼 瀏覽:140
spring開發伺服器地址 瀏覽:411
伺服器上如何查看伺服器的埠 瀏覽:678
單片機伺服器編譯 瀏覽:770
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:956
在word中壓縮圖片大小 瀏覽:255
javatomcat圖片 瀏覽:419
程序員生產智能創意 瀏覽:67
匯和銀行app怎麼登錄 瀏覽:383
騰訊伺服器如何上傳源碼 瀏覽:749
單片機的原理概述 瀏覽:512
火控pdf 瀏覽:270
如何復制雲伺服器centos環境 瀏覽:988
債權pdf 瀏覽:307
紅色番字的app怎麼下載 瀏覽:877