Tag: lambda

lambda表达式是未使用的

在使用Android的Switch ,我附加了一个setOnCheckedChangeListener ,并得到了这个警告 lambda表达式是未使用的。 如果你的意思是块,你可以使用'run {…}' 这里的代码片段: switchAction.setOnCheckedChangeListener({ _, isChecked -> { preferences.userStatus = isChecked switchToggleVisibility(isChecked) if (isChecked) { fetchStats() getOrders() } else { releaseOrder() } } }) 使用run确实解决了这个警告,但有没有人知道背后的原因? lambda表达式如何不被使用?

如何使用lambda表达式android替换匿名类

我们在android项目中使用了很多匿名类。 例如: new DialogInterface.OnClickListener() new MediaPlayer.OnPreparedListener() 等等有没有办法用新的Java lambda表达式来替换这些匿名类?

Kotin如何指定在Lambda中封闭的退货标签

在为游戏制作EntityContainer(NPC,玩家,对象等列表的容器)时遇到问题。 当重写invoke操作符,并且在我的代码被包装在一个父lambda的情况下,我没有办法添加一个return语句。 import java.util.* fun main(args: Array<String>) { val container = Container<String>() container.addList(listOf("h", "e", "l", "l", "o")) container.addList(listOf(" ")) container.addList(listOf("w", "o", "r", "l", "d", "!")) Emptylambda { container[String(), Any(), Any()].forEach { val myCondition = true if (myCondition) return@forEach print(it) } } println("\n\n") Emptylambda { container[String(), Any(), Any()] { val myCondition = true if (myCondition) return […]

API 23(Marshmallow)的Android SDK是否支持Java 8?

IntelliJ Android Studio最后更新(从2016年1月30日起)支持Java 8吗? 我用了一个lambda表达式 mButton.setOnClickListener((View v) -> { // do something here }); 然后Android Studio告诉我,我有一个错误,当我解决这个问题(Alt +空格键),我选择了更改为Java 8(或类似的东西),它的工作lambda,但Android的库似乎是不支持的,它标记所有红色的。 在Android Studio中支持Java 8的任何选项? 注意:我正在使用最后一个API级别

错误:Jack需要支持Java 8语言功能。 启用插件或删除sourceCompatibility JavaVersion.VERSION_1_8

正如在developer.android网站中所提到的 如果你的项目依赖于Jack,那么你应该迁移到使用Android Studio默认工具链中内置的Java 8支持。“Jack工具链已经被废弃了。 我需要使用lambda表达式,所以我已经禁用了插口选项,但是当我编译我的代码时,出现以下错误 Error:Jack is required to support Java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8. 以下是我的build.gradle文件的截图

Java将列表转换为集合的映射

假设我有一个名为Student的对象列表。 对象学生是这样定义的 public Class Student { private String studentName; private String courseTaking; } 在学生名单中,可以有多个具有相同studentName但不同courseTaking的学生对象。 现在我想把学生名单变成一个studentName和course的地图像这样 Map<String, Set<String>> 关键是studentName,价值就是把同一个学生的所有课程作为一个整体放在一起。 我怎样才能使用stream()和collect()?

Kotlin高阶函数和单方法接口的行为?

我之前在使用RxJava和Kotlin时遇到了一些问题。 我做了一些有趣的发现,我仍然感到困惑。 RxJava中有简单的Func1接口 public interface Func1<T, R> extends Function { R call(T t); } 我试图添加一个扩展方法到一个Observable ,也是一个RxJava类。 这将收集排放到谷歌Guava ImmutableListMulitmap使用Func1来映射每个项目的关键。 fun <K,T> Observable<T>.toImmutableListMultimap(keyMapper: Func1<T, K>): Observable<ImmutableListMultimap<K,T>> { return this.collect({ ImmutableListMultimap.builder<K,T>()},{ b, t -> b.put(keyMapper.call(t), t)}).map { it.build() } } 当我试图调用这个扩展方法时,我无法编译它,它根本不理解lambda表达式。 ScheduledItem.all.flatMap { it.rebuildSoftTransactions } .toImmutableListMultimap { it.id /*compile error */ } .cache() 然而,当我修改扩展方法使用函数类型时,发生了最奇怪的事情。 fun <K,T> Observable<T>.toImmutableListMultimap(keyMapper: (T) […]

Kotlin和杰克不受支持(Android Studio 2.3.2)

我在用Jack配置kotlin插件时出现这个错误。 我目前正在使用Android studio 2.3.2。 错误:Kotlin Gradle插件不支持弃用的Jack工具链。 禁用杰克或恢复到Kotlin Gradle插件版本1.1.1。

Kotlin:使用lambda代替功能界面?

在Java中,我们可以这样做Events.handler(Handshake.class, hs -> out.println(hs)); 但是在Kotlin中,我试图复制这个行为来取代这个: Events.handler(Handshake::class, object : EventHandler<Handshake> { override fun handle(event: Handshake) { println(event.sent) } }) 用更方便: Events.handler(Handshake::class, EventHandler<Handshake> { println(it.sent) }) 出于某种原因参考EventHandler : 更好的是,但是我想使用更短的东西,像这样: Events.handler(Handshake::class, { println(it.sent) }) 或者使用广告的功能来使用这样的方法: Events.handler(Handshake::class) { println(it.sent) } 这是我的Events对象: import java.util.* import kotlin.reflect.KClass object Events { private val map = HashMap<Class<*>, Set<EventHandler<*>>>() fun <T : Any> handler(eventType: […]

Kotlin lambda以Interface作为参数

我对Koltin lambdas有点困惑,我想知道如何使用它,给出以下代码片段: interface KotlinInterface { fun doStuff(str: String): String } 而需要这个接口的函数作为参数传递: fun kotlinInterfaceAsArgument(kotlinInterface: KotlinInterface): String{ return kotlinInterface.doStuff("This was passed to Kotlin Interface method") } fun main(args: Array<String>){ val newString = kotlinInterfaceAsArgument({ str -> str + " | It's here" //error here (type mismatch) }) } 但是,Java中的相同逻辑按照预期编译和运行。 public class JavaClass { public String javaInterfaceAsArgument(JavaInterface javaInterface){ String […]