为什么我可以将Lambda用于类java。lang.Thread,但不用于MyThread?
interface MyRunnable{
fun run()
}
class MyThread(runnable : MyRunnable){
}
fun test(){
Thread({}) // All Alright
MyThread({}) //Exception. Type mismatch <<-- Why ?
}
链接以检查此示例:https://try.kotlinlang.org/#/UserProjects/tbs79qfkh50psp7r3qrdrinrmt/sfkpjq1bjvg4r6d5rmnu6mp4a8
从SAM转换文件中:
请注意,此功能仅适用于Java互操作;由于静态编程语言具有适当的函数类型,因此无需将函数自动转换为静态编程语言接口的实现,因此不受支持。
换句话说,使用 语法仅支持对Java的调用。公众的理由是,您可以执行以下任一操作:
>
让您的MyThread构造函数将一级函数类型作为参数。
使用对象表达式:
MyThread(object : MyRunnable {
override fun run() {}
})
这显然相当冗长。然而,根据这张Kotlin票据,lambda语法实际上只是Java互操作的一部分,而不是核心语言的一部分,因此需要进行一些仔细的设计才能完成更多的工作。
我是科特林的新手。因此,我在Android Studio中创建了一个kotlin项目,并导入了片段ktx和活动ktx依赖项。在片段中,我右键单击片段,然后转到- 这是我的应用程序。梯度锉
我有一个Spring自动配置库,我是Swagger的开发者。它是使用Spring Boot用Kotlin编写的。 我的主要自动配置定义为: 我有几个类,见下面的主类,它们作为bean使用注入到上面的类中。我想使用新的从我的主自动配置类中删除丑陋的。 源代码存储在我的GitHub回购https://github.com/opengoodio/swagger-auto-configuration. 主
问题内容: 我的理解是Java的正则表达式实现是基于Perl的。但是,在下面的示例中,如果我使用相同的字符串执行相同的regex,则Java和Perl返回不同的结果。 这是Java示例: 返回值:不匹配 这是Perl的示例: 返回:匹配项 对我来说,Perl的结果很有意义。它寻找单个单词字符的匹配项。我不明白为什么Java不认为这是一个匹配。差异的原因是什么? 问题答案: Java 方法正在测试正
正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创
在我的项目中,我有文件为FooClass类定义模式。我还配置了,以便在构建时为我生成类。 为什么我仍然需要指定架构注册表URL?难道我的使用者不能使用项目中的文件反序列化我的Kafka消息的值吗?
我刚刚开始使用抽象类,重写val和singeltons。但是,我刚刚遇到了一个非常奇怪的行为。我的目标是拥有一个抽象类,然后创建几个扩展该抽象类的singeltons。因为我需要某些变量,所以我创建了抽象val,然后可以在子类中覆盖它(而不是通过构造函数传递它们)。 所以我上了4节课: 主要活动: 实例: 对象 AClass: 输出: 在此之后,我意识到被覆盖可能直到执行 之后才会初始化。但后来我