Android’de Retrolambda kullanımı

Bildiğiniz gibi Java, JDK 8 ile birlikte lambda expression’a destek vermeye başladı. Fakat, Android’de hala Java 7 kullanıldığı için λ‘yı doğal yollardan kullanamıyoruz. Bunun için bazı abiler yememiş içmemiş Java’nın eski sürümlerinde de kullanalım diye Retrolambda’yı icat etmişler. 🙃 Artık biz Android geliştiricilerde projelerimizde λ kullanabiliriz. Abinin biri de sağolsun işimizi kolaylaştırmak için bir gradle-plugin yazmış. Android’de bu plugin’i kullanarak Retrolambda’yı projemize dahil edeceğiz. Hadi başlayalım.
1- Projemizin root dizinindeki build.gradle’a kalın punto ile belirtilmiş olan satırı ekliyoruz.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}2- Daha sonra app/build.gradle’a yine kalın punto ile belirtilmiş olan satırları ekliyoruz.
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.sembozdemir.training.retrolambdaexample"
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
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.3.0'
}
Artık Button’a şu şekilde OnClickListener verebilirim.
button.setOnClickListener(
v -> Toast.makeText(this, "Retrolambda yay!", Toast.LENGTH_LONG).show());
Bence eski halinden daha temiz görünüyor. 😉