retrolambda

2015-06-12T20:17:38+09:00 Android Java

公式?: https://github.com/evant/gradle-retrolambda

参考: http://qiita.com/kamimoo/items/f4b3ef22ca0327e88e32

最近色んなデモアプリのソースとかを見ていると一部でJava8での記法みたいなので作られてる物もあるけど、AndroidってJava8サポートしてないよねっていう事で調べたらretrolambdaっていうのを使う事で出来るっぽい

build.gradle

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:1.2.3"
        // 追加
        classpath "me.tatarka:gradle-retrolambda:3.1.0"
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

app/build.gradle

apply plugin: "com.android.application"
apply plugin: "me.tatarka.retrolambda"

android {
    compileSdkVersion 17
    buildToolsVersion "22.0.1"

    lintOptions {
        abortOnError false
    }

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

retrolambda {
    // SEE ALSO https://github.com/evant/gradle-retrolambda#configuration

    // jdkを設定するかENV["JAVA8_HOME"]を設定しておく必要あるっぽい。詳しくは上記URL参考
    // When running gradle with java 6 or 7, you must set the path to jdk8, either with property retrolambda.jdk or environment variable JAVA8_HOME
}

設定は終わり

MainActivity.java

package sample.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        Button btn = new Button(this);
        btn.setText("click");
        btn.setOnClickListener(view -> {
            showToast("click!!");
        });

        setContentView(btn);
    }

    private void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }
}

っていう感じでJava8の記法を使ってJavaを記述出来る模様

どうしてもJava8でやりたいんやっていう人向けでそうでもないなら別に良いんじゃないっすかね

retrofit RxAndroidをざっくり使ってみた