Articles of lambda

AndroidStudio 4+上的语言级别Java 8(Retrolambda)?

因此,有人将用于Java 8的Lambdas反向回Java 6和7.显然它也适用于Android。 该项目名为Retrolambda 。 我想在AndroidStudio上玩这个,但是在最近的版本中它们似乎已经删除了将Java 8设置为语言级别的能力(因此我在使用Lambdas时没有遇到编译错误)。 有没有人知道这方面的方法? 我想这与AndroidStudio是经过修改的IntelliJ这一事实有关。 任何帮助,将不胜感激。

java.lang.NoClassDefFoundError $$在Kotlin中内联$ forEach $ lambda $ 1

我目前正在使用版本1.1.1中的Kotlin开发一个Android应用程序 在我的代码中,我有几个forEach结构的imbrication,以便读取几个MutableList和MutableMap 。 不幸的是,我的应用程序崩溃了以下堆栈跟踪: java.lang.NoClassDefFoundError:com.package.fragment.ReminderAddFragment $ onRetrieveBusinessObjects $$ in.sach.package.fragment.ReminderAddFragment.onRetrieveBusinessObjects(ReminderAddFragment.kt:275)in com.smartnsoft.droid4me.app.Droid4mizer inlined $ forEach $ lambda $ 1 .onRetrieveBusinessObjects(Droid4mizer.java:552)at com.smartnsoft.droid4me.app.Droid4mizer.onRetrieveBusinessObjectsInternal(Droid4mizer.java:606)at com.smartnsoft.droid4me.app.Droid4mizer.access $ 000(Droid4mizer.java:46)at com .smartnsoft.droid4me.app.Droid4mizer $ 1.run(Droid4mizer.java:197)java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:423)at java.util.concurrent.FutureTask.run(FutureTask。 java:237)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588)at java.lang.Thread.run(Thread的.java:818) 这里的代码 tutorialCategories.forEach { (_, _, _, _, _, tutorials) -> tutorials.forEach { tutorial -> if (tutorial.id == simpleReminderFromExtra.tutorialId) { //… val […]

Kotlin:安全的lambdas(没有内存泄漏)?

在阅读了关于内存泄漏的这篇文章之后,我想知道在Kotlin Android项目中使用lambdas是否安全。 确实,lambda语法使得我的程序更加轻松,但是内存泄漏呢? 作为一个有问题的例子,我从我的一个项目中取得了一段代码,在那里构build了一个AlertDialog。 这段代码在我的项目的MainActivity类中。 fun deleteItemOnConfirmation(id: Long) : Unit { val item = explorerAdapter.getItemAt(id.toInt()) val stringId = if (item.isDirectory) R.string.about_to_delete_folder else R.string.about_to_delete_file val dialog = AlertDialog.Builder(this). setMessage(String.format(getString(stringId), item.name)).setPositiveButton( R.string.ok, {dialog: DialogInterface, id: Int -> val success = if (item.isDirectory) ExplorerFileManager.deleteFolderRecursively(item.name) else ExplorerFileManager.deleteFile(item.name) if (success) { explorerAdapter.deleteItem(item) explorerRecyclerView.invalidate() } else Toast.makeText(this@MainActivity, R.string.file_deletion_error, Toast.LENGTH_SHORT).show() }).setNegativeButton( R.string.cancel, […]

Android的retrolambda,语句lambda可以用expression式lambdareplace

我在我的项目中使用retrolambda,效果很好。 但今天当我使用它,Android Studio给我一个提示: 我以前没见过这个,为了符合这个提示,我需要修改代码。

有没有办法在24小时以后的Android API上使用Java 8的function接口?

我可以使用retrolambda启用Android API级别<24的lambdas。 所以这个工作 myButton.setOnClickListener(view -> Timber.d("Lambdas work!")); 这也适用 Runnable runLater = () -> Timber.d("Lambdas work!"); runLater.run(); 但是这个不是 Consumer<Integer> runLaterWithInt = (Integer i) -> Timber.d("i = " + i); runLaterWithInt.accept(3); 最后一个适用于Android API级别24,但在其他设备上,此代码会导致崩溃 java.lang.NoClassDefFoundError: com.retrolambdatry.MainActivity$$Lambda$1 我试图启用Java 8,而不是使用retrolambda。前两个代码示例仍然有效,尽pipebutterknife停止工作。 https://developer.android.com/preview/j8-jack.html#configuration这里说ava.util.function是支持的,但是运行第三个时仍然崩溃,这次有点不同 java.lang.NoClassDefFoundError: com.retrolambdatry.MainActivity$-void_onCreate_android_os_Bundle_savedInstanceState_LambdaImpl1

Lambda在Android库模块中导致编译器exception

当我在Android库模块中使用lambdaexpression式时,我收到一个编译器exceptioncom.sun.tools.javac.code.Symbol$CompletionFailure: class file for java.lang.invoke.MethodType not found 。 在Android应用程序模块中使用时,Lambdaexpression式正在编译时没有错误。 可以在这里find一个示例项目来演示这个问题: https://github.com/adamdye/AndroidLambdaIssue 示例中有趣的类是MyLibrary.java和MainActivity.java。 每个类都包含相同的expression式。 build立 Android Studio 2.2 preview 1 min/target SDK version = android-N build tools version = 24.0.0.rc4 jack compiler enabled source/target compatibility = 1.8 Gradle version = 2.10 Android Plugin Version = 2.2.0-alpha1 JDK = java 8 我对使用retro-lambda不感兴趣。 我想通过适当的configuration来实现这个function。 我假设我错过了某个步骤。

Android和Lambda

我需要集成一些代码,并广泛使用Java lambda函数。 我有几个限制,要求我使用Eclipse Mars开发我的项目,使用最新的ADT插件,而不是Android Studio。 问题是使用Lambda函数要求使用1.8 JDK合规性,但是如果这样设置的话,我会收到以下消息: Android requires compiler compliance level 5.0 or 6.0. Found '1.8' instead. 两个人如何能够和睦相处? 编辑:这不是重复提出的问题,因为我问的是ADT Eclipse,而且自从上次更新这个问题以来,Android确实支持Java 8,所以这不仅仅是一个重复,而是现在这个问题(在最后一次更新之后的1.5年之后)已经过时。

unit testing方法失败,其中包含lambdaexpression式Android Studio

问题描述 我写了一个使用Lambdaexpression式的简单例子。 代码工作正常,直到我运行一个unit testing。 一旦我运行unit testing,它会因为下面的错误而失败 环境 Android Studio 2.2 Preview 3 错误 编译器发生exception(1.8.0_76-release)。 在检查错误数据库( http://bugs.java.com )的重复内容后,请通过Java错误报告页面( http://bugreport.java.com )向Java编译器提交一个错误。 在你的报告中包含你的程序和下面的诊断。 谢谢。 com.sun.tools.javac.code.Symbol $ CompletionFailure:未findjava.lang.invoke.MethodType的类文件 :app:compileDebugJavaWithJavac FAILED 失败:生成失败,出现exception。 出了什么问题:执行失败的任务':app:compileDebugJavaWithJavac'。 编译失败 详细信息请参阅编译器错误输出。 尝试:运行–stacktrace选项来获取堆栈跟踪。 运行–info或–debug选项来获得更多的日志输出。 构build失败 RxDefer.java import rx.Observable; import rx.Subscriber; class RxDefer { private Observable<Integer> getInt() { return Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> […]

AndroidStudio 4+上的语言级别Java 8(Retrolambda)?

所以,有人将Java 8的Lambdas移回Java 6和7.显然,它也适用于Android。 该项目被称为Retrolambda 。 我想在AndroidStudio上玩这个游戏,但是在最近的版本中,他们已经删除了将Java 8设置为语言级别的能力(所以我在使用Lambdas时没有得到编译错误)。 有没有人知道这个方法? 我想这与AndroidStudio是一个修改过的IntelliJ的事实有关。 任何帮助,将不胜感激。

Android Jack:来自jar文件的Lambda需要在类path上的接口进行编译,未知的接口是java.util.function.Consumer

在android studio 2.2上获取这个。 有没有人有解决方法? 我的应用程序构build文件是: apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "acme.cb2" minSdkVersion 18 targetSdkVersion 24 versionCode 1 versionName "1.0" jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: […]