Android Studio 使用 Lambda表示式
阿新 • • 發佈:2019-02-06
AS2.1的Jack編譯器終於支援Java8的一些新特性了,下面介紹在AS中使用Lambda表示式。
1.配置build.gradle(Module:app)
2.MainActivityapply plugin: 'com.android.application' android { compileSdkVersion 'android-N' buildToolsVersion '24.0.0 rc3' defaultConfig { applicationId "com.example.shen.lambdatest" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" //使用Jack編譯器 jackOptions{ enabled true } } //使用Java1.8 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' }
package com.example.shen.lambdatest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private static final String TAG="Lambda"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); } private void initData(){ List<String> lString=new ArrayList<>(); for(int i=0;i<10;i++){ lString.add(i+""); } //使用Lambda表示式前 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { for(String string:lString){ Log.e(TAG,string); } } }); //使用Lambda表示式後 findViewById(R.id.button).setOnClickListener(v ->lString.forEach(obj->Log.e(TAG,obj))); } }