Android Studio 配置 JDK1.8 使用Lambda表达式
JDK1.8 添加几项新特性譬如对集合的优化语法的便捷配合Lambda表达式使用可以让代码更加简便美观,但对于一些没有接触Lambda表达式的同学们来说就难于理解代码里的意向和调试。因为Android SDK目前还没有支持JDK1.8 所以有些新特性都是用不上
案例1:
List<String> names = Arrays.asList("FX", "Zing", "Hk");
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
//forEach这个方法也是JDK1.8里有的,后面就Lambda表达式 ->左边是参数,->右边是执行方法体。
names.forEach(name->System.out.println(name));
//注意 因为Android SDK还没有支持JDK1.8 所以没有forEach这个方法。但可以使用Lambda表达式。那是因为我们通过RetroLambda插件将Java8中的代码编译产生的字节码转换成Java7字节码。
现在我们把Android Studio 的SDK 换成JDK8
1.打开 File->Setings 搜索closure 把它钩上。
2.打开 Project Structure 快捷键:Ctrl+Shift+alt+s
3.选择SDK location 配置JDK1.8
4.点击Modules 里面的项目,都选择1.8如果下拉没有,就直接输入1.8
好的现在我们的环境都已经配置好,重新运行下项目发现报错了
Java\jdk1.8.0_65\bin\java.exe” finished with non-zero exit value 1
然后就上百度Google各种搜发现说要加大JAVA运行内存,都得不到解决。
把这些代码放在你项目的build里试试,重新Gradle 项目,但是构建是会有点慢是因为这个插件是用Maven下载下来的。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.4'
}
}
// Required because retrolambda is on maven central
repositories {
mavenCentral()
}
apply plugin: 'com.android.application' //or apply plugin: 'java'
apply plugin: 'me.tatarka.retrolambda'
好了,现在基本都可以正常了,如果有错尝试把CLASSPATH配置上
具体可以参考:https://github.com/evant/gradle-retrolambda
如果是Eclipse 直接在Eclipse MarketPlace 搜索Java 8 安装下面插件。