Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以吗;使用「;现在有Android开发的Java8吗?_Java_Android_Java 8 - Fatal编程技术网

我可以吗;使用「;现在有Android开发的Java8吗?

我可以吗;使用「;现在有Android开发的Java8吗?,java,android,java-8,Java,Android,Java 8,我目前已经安装了Java7JDK。这样已经有一段时间了。然而,最近,我的教授指示全班同学卸载JavaJDK7并安装JavaJDK8,以便能够完成家庭作业等 我一直在使用JavaJDK7编写和部署Android应用程序,没有任何问题,所以我想知道现在升级JDK8是否安全?我假设在我的Android开发中不需要任何Java8特定的方法或函数。所以如果我远离这一点,我的Android开发会受到任何影响吗 另一方面,我还没有找到任何官方文档说明JavaJDK8是否安全,或者如何使其安全。无论如何,我很快

我目前已经安装了Java7JDK。这样已经有一段时间了。然而,最近,我的教授指示全班同学卸载JavaJDK7并安装JavaJDK8,以便能够完成家庭作业等

我一直在使用JavaJDK7编写和部署Android应用程序,没有任何问题,所以我想知道现在升级JDK8是否安全?我假设在我的Android开发中不需要任何Java8特定的方法或函数。所以如果我远离这一点,我的Android开发会受到任何影响吗


另一方面,我还没有找到任何官方文档说明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及更低级别上使用)
此外,还提供以下Java 8语言API:

  • 反射和语言相关API
    • java.lang.FunctionInterface
    • java.lang.annotation.Repeatable
    • java.lang.reflect.Method.isDefault()
    • 以及与可重复注释相关联的反射API,例如
      AnnotatedElement.getAnnotationsByType(类)
  • 实用程序API
    • java.util.function
    • java.util.stream
您所要做的就是使用新的jack编译器,要做到这一点,您只需将其添加到gradle文件
build.gradle(Module:app)

参考文献:


Android不支持Java 8的大部分新功能。因此,如果我不使用这些新功能中的任何一项,我仍然能够编译和运行我的代码?即使你安装JDK8,你也可以将兼容性设置为1.7(或任何需要的版本)…最好保留7和8。明白了!我会记下来的。我的教授还没有给出太多的细节,只是说他更喜欢使用Java8,以避免将来出现“潜在问题”。
android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}