Android Studio 配置 JDK1.8 使用Lambda表达式

2023-05-16

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 安装下面插件。
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio 配置 JDK1.8 使用Lambda表达式 的相关文章

  • 混合应用程序开发(PhoneGap、Cordova、Ionic)

    我试图了解一切是如何运作的 但对此主题有一些疑问 我将解释我如何理解这些东西 首先让我们从Cordova这是翻译平台JS CSS HTML文件到本机应用程序中 但这并不完全是事实 实际上 它只是将所有 html css 文件放入 asset
  • 构建 gradle 系统应用程序作为 AOSP 构建的一部分

    我有一个基于 AOSP 的自定义 ROM 并且正在开发一个系统应用程序 该应用程序在 ROM 构建期间打包 就像任何其他系统应用程序一样 是否可以将此应用程序切换为 gradle 样式应用程序 并在 AOSP 构建期间使用 gradle 构
  • Android 上的透明视频

    有什么办法让Android播放带有透明区域的视频吗 当我尝试在 VideoView 中播放包含透明区域的 WebM 视频时 视图的背景保持黑色 我希望看到透明区域上显示的父视图的背景 而不是黑色 到目前为止 我发现的唯一可行的解 决方案是从
  • Android FAB 图标始终为黑色,带有 MaterialComponents 主题

    我正在创建一个 Android 应用程序 并使用 AndroidX 库和 Material design 主题 我的应用程序主题为styles xml is 我有来自自定义库的以下 F
  • 在 Firebase 群组消息应用中实现已读回执功能

    我想在我的 Firebase 群组消息应用中实现 Seen 功能 您能否建议采取最好 最有效的方法 工作代码将不胜感激 例如 应用程序会显示 已被 6 人看过 or 15 人看过 在群组消息中 这是我的项目 https github com
  • 如何使用 WiFi Direct 打印文本文件

    我有一个正在运行的 Android 应用程序 可以显示用户统计信息 我想将纯文本格式 txt 的小报告发送到 WiFi Direct 打印机 我已经下载了示例demo https developer android com guide to
  • 如何在 Android Studio 中立即获取 LivaData 的值?

    savedRecordFileName是一个变量LivaData
  • 我应该在 Android 1.x 和 2.x 应用程序中部署什么样的图标?

    事情是这样的 在 Android 1 5 和 1 6 中我们有图标设计指南 http developer android com guide practices ui guidelines icon design html 本指南中有应用程
  • Android 2.x 天城文 unicode 问题

    我正在尝试使用以下代码支持 android 2 x 的梵文字体 即使 android 2 x 无法渲染梵文字体 除了 raswa 和 dirga 存在一些问题之外 代码工作正常 是否有可能在 android 2 x 中获得正确的梵文表示形式
  • Single.zip - 如何捕获失败的呼叫并继续其余的网络呼叫?

    我正在进行 5 个并行网络调用 模拟其中 4 个成功 其中 1 个失败 失败的调用使整个Single zip 失败 即使其他 4 个网络调用成功 我也无法获得它们的结果 如何处理单个失败的网络调用的错误Single zip 并获得成功者的结
  • 如何避免将相同的片段添加到堆栈中

    我需要一些帮助 他们以这种方式将片段添加到活动中 问题是每次调用 openFragment 时都会创建片段并添加 这是显而易见的 问题 我做了什么修改 这样它只能添加一次片段 在下次使用相同片段标签的调用时 它将什么也不做 案例 第一次按下
  • 通过使用 Intents 使用预装的 Google 地图而不是自己的 Activity?

    我只是想知道是否可以将地理坐标传递给谷歌地图应用程序之二意图或类似的东西 我自己编写了一个用于显示路线 坐标等的应用程序 但是让谷歌地图本身显示这些不是更优雅吗 我不知道这是否可能 但也许你们中的一个人可以回答这个问题 如果这是可能的 是否
  • 如何画一个中间透明的圆

    我试图用以下代码绘制一个白色圆圈 mPaint setColor 0xFFFFFFFF canvas drawCircle x y radius mPaint 但它显示为固态磁盘 如何让它只显示为中心透明的圆形轮廓 我查看了帮助 这对我来说
  • Android 权限 BIND_NOTIFICATION_LISTENER_SERVICE 不起作用

    我正在 React Native 应用程序中工作 我正在努力在 Android 中使用Notification Services BIND NOTIFICATION LISTENER SERVICE 我正在尝试使用读取传入的通知Notifi
  • Android快速查找网络上所有本地设备

    我正在制作一个 Android 应用程序 需要能够查看本地网络设备 名称或 IP 目前我可以扫描网络并找到设备的本地IP 然而 由于时间太长 用户在搜索网络时会看到黑屏加载几分钟 这是我当前正在使用的代码 private ArrayList
  • 如何在Java中从一组选定的颜色中输出随机颜色? (安卓)

    因此 我希望每当用户输入答案时都为字符串赋予随机颜色 我的问题是 我不确定如何使字符串的随机颜色成为特定范围的颜色 例如 如果我希望字符串随机变成蓝色 红色 绿色 粉色 白色或棕色 只有这些颜色 没有其他颜色 到目前为止 我已经使用以下代码
  • 如何初始化 LinearLayout 变量?

    快速通知 我正在使用SharedPreferences这样我可以在重新打开应用程序时重新加载数据 Problem我有一个LinearLayout在我的应用程序的主要片段中 一切都运行顺利 直到我重新打开应用程序并尝试重新初始化LinearL
  • 在android中重叠屏幕

    在下面的布局中 我有一个名为扫描设备的文本视图 其中显示设备名称 但我的设备列表显示在屏幕上方 任何人都可以帮助我如何滚动视图应该在设备列表内 滚动屏幕时 它显示设备列表 但它显示在屏幕上方 想要显示在屏幕内
  • 谷歌放置片段上的Java空指针异常

    当我尝试尝试自动完成位置功能时 出现空指针异常 我像文档中一样添加了片段 并需要帮助来解决这个问题 谢谢 主要活动 package com example srinivas mapautocompletetest1 import andro
  • 如何以编程方式获取 Android 项目(非设备)中支持的语言列表

    在一些项目中我们可能会出现这种情况 如何以编程方式获取此应用程序 项目支持的语言列表 结果我需要这样的字符串数组 en bg bs da de hr it nl pl pt sk sr tr 当然 我可以通过键入它来对其进行硬编码 但我认为

随机推荐