我可以吗;使用「;现在有Android开发的Java8吗?
我目前已经安装了Java7JDK。这样已经有一段时间了。然而,最近,我的教授指示全班同学卸载JavaJDK7并安装JavaJDK8,以便能够完成家庭作业等 我一直在使用JavaJDK7编写和部署Android应用程序,没有任何问题,所以我想知道现在升级JDK8是否安全?我假设在我的Android开发中不需要任何Java8特定的方法或函数。所以如果我远离这一点,我的Android开发会受到任何影响吗我可以吗;使用「;现在有Android开发的Java8吗?,java,android,java-8,Java,Android,Java 8,我目前已经安装了Java7JDK。这样已经有一段时间了。然而,最近,我的教授指示全班同学卸载JavaJDK7并安装JavaJDK8,以便能够完成家庭作业等 我一直在使用JavaJDK7编写和部署Android应用程序,没有任何问题,所以我想知道现在升级JDK8是否安全?我假设在我的Android开发中不需要任何Java8特定的方法或函数。所以如果我远离这一点,我的Android开发会受到任何影响吗 另一方面,我还没有找到任何官方文档说明JavaJDK8是否安全,或者如何使其安全。无论如何,我很快
另一方面,我还没有找到任何官方文档说明JavaJDK8是否安全,或者如何使其安全。无论如何,我很快就要升级到Java 8了……我想你应该试试。附带说明:您可以轻松地同时运行JDK 7和JDK 8。我不知道Android Studio,但在Eclipse中,您可以配置构建路径
尽管如此:您的家庭作业是否使用Java8特有的功能?如果您不使用lambdas或javafx8,我认为您不需要jdk8。听起来你的教授只是想使用最新版本的Java(从你的第一句话判断)。如果你一直在使用Java 7部署Android应用程序,那么可以肯定的是,到目前为止,你还没有使用任何Java 8功能,所以我看不出这有什么关系 按照讲师的指示,当你为学校做作业时,只需在项目结构中选择JDK或语言级别 CTRL+ALT+S,选择
Project
您可以默认使用Java8SDK,但将其限制为Android应用程序的Java7功能。或者,您可以简单地将家庭作业项目设置为Java8SDK
假设Android Studio包含Intellij的核心设置,那么在这里就要冒险了。如果您不使用java 8功能,这是安全的 尽管您可能对带有retroLambda和collectionsQuery的Java8感兴趣。 和 这将允许您将代码写入以下内容:-
mButton.setOnClickListener( v-> doClickEvent());
mView.postDelayed( () -> someMethodToRun() , 1000);
Queryable.from(listOfObject).forEachR(r -> doProcess(r));
而不是笨重的
mButton.setOnClickListener( new View.OnClickListener(){
@Override
public void onClick(View v) {
doClickEvent();
}
});
要将Java8与retrolambda一起使用,只需添加gradle文件
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
// :
// Snips the rest of configuration.
// :
compileOptions {
encoding "UTF-8"
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.innahema:collections-query:0.2.9'
}
在project gradle.build文件中添加以下内容
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.3'
classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' //fix lint issue
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
在Google I/O 2016中,他们宣布Android现在支持Java 8的一些功能,但不是所有功能 特征如
- 默认和静态接口方法
- Lambda表达式(也可在API级别23及更低级别上使用)
- 可重复注释
- 方法参考(也可在API级别23及更低级别上获得)
- 类型注释(也可在API级别23及更低级别上使用)
- 反射和语言相关API
java.lang.FunctionInterface
java.lang.annotation.Repeatable
java.lang.reflect.Method.isDefault()
- 以及与可重复注释相关联的反射API,例如
AnnotatedElement.getAnnotationsByType(类)
- 实用程序API
java.util.function
java.util.stream
build.gradle(Module:app)
:
参考文献:
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}