首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我现在可以在Android开发中“使用”Java 8了吗?

我现在可以在Android开发中“使用”Java 8了吗?
EN

Stack Overflow用户
提问于 2016-01-14 02:12:51
回答 3查看 13.3K关注 0票数 14

我现在已经安装了Java 7 JDK。已经有一段时间了。然而,最近,我的教授正在指示这个类卸载Java 7并安装Java 8,以便能够完成作业等等。

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

另外,我还没有找到任何官方文档,说明Java 8是否安全或如何使其安全。不管怎样,我很快就要升级到Java 8了.

EN

回答 3

Stack Overflow用户

发布于 2016-09-19 15:11:09

在Google /O 2016中,他们宣布Android现在支持Java 8的一些功能,但不是所有的特性。

特征如

  • 默认和静态接口方法
  • Lambda表达式(也可在API级别23及更低版本上使用)
  • 可重复注释
  • 方法引用(也可在API级别23及更低版本上获得)
  • 类型注释(也可在API级别23及更低版本上使用)

此外,还提供了以下Java 8语言API:

  • 反射和与语言相关的APIs
    • java.lang.FunctionalInterface
    • java.lang.annotation.Repeatable
    • java.lang.reflect.Method.isDefault()
    • 和与可重复注释(如AnnotatedElement.getAnnotationsByType(Class) )关联的反射API。

  • 实用程序API
    • java.util.function
    • java.util.stream

您应该做的就是使用新的jack编译器,要做到这一点,只需将其添加到gradle文件build.gradle (Module: app)中即可。

代码语言:javascript
复制
android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

参考资料:

票数 17
EN

Stack Overflow用户

发布于 2016-01-14 02:38:23

如果您不使用java 8特性,这是安全的。

尽管您可能热衷于使用retroLambda和collectionsQuery的java 8。https://github.com/evant/gradle-retrolambdabogdan/collectionsquery/src

这将允许您编写代码如下所示:

代码语言:javascript
复制
mButton.setOnClickListener( v-> doClickEvent()); 

mView.postDelayed( () -> someMethodToRun() , 1000);

Queryable.from(listOfObject).forEachR(r -> doProcess(r));

相对于笨重

代码语言:javascript
复制
mButton.setOnClickListener( new View.OnClickListener(){
     @Override
      public void onClick(View v) {
         doClickEvent();
      }
});

要将java 8与retrolambda结合使用,只需添加gradle文件即可。

代码语言:javascript
复制
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'
}

在项目gradle.build文件中添加以下内容..。

代码语言:javascript
复制
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
    }
}
票数 3
EN

Stack Overflow用户

发布于 2016-01-14 02:19:43

我想你应该试试。另外,您可以轻松地同时运行JDK 7和JDK 8。我不知道Android,但是在Eclipse中您可以配置构建路径。

尽管如此:您是否在家庭作业中使用Java 8的特定特性?如果您不使用lambdas或JavaFX 8,我认为您将不需要JDK 8。听起来更像是您的教授只想使用最新版本的Java (从您的第一句话判断)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34780565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档