Tag: jvm

有没有一种干净的方式在Kotlin中使用Groovy的扩展方法?

例如,Groovy允许获取由java.nio.file.Path表示的文件的文本,如下所示: // Groovy code import java.nio.file.Path import java.nio.file.Paths Path p = Paths.get("data.txt") String text = p.text 我希望能够在Kotlin中重用Groovy的text扩展方法。 请注意 :我知道Kotlin在这个特殊情况下有一个相关的方法 。 不过,可能有Groovy方法对Kotlin用户很有用。

Gradle忽略kotlin jvmname?

我正在构建一个Android应用程序,并试图用Gradle编译一段kotlin代码。 我有@JvmName ,但似乎注释被忽略,因此编译失败。 @JvmName("setOptionsForPairs") private fun setOptionsFor(field: JSONObject, options: MutableList<Pair<Int, String>>, spinner: Spinner?){ options.plusAssign(json2pairs(field.getJSONObject("options"))) setOptions(options.map { it.second }, spinner) } private fun setOptionsFor(field: JSONObject, options: MutableList<String>, spinner: Spinner?){ val candidates = field.getJSONArray("options") for (i in 0..candidates.length() – 1) options.add(candidates.getString(i)) setOptions(options, spinner) } Gradle告诉我:平台声明由于上述函数的签名而发生冲突。 我错过了什么? 我应该告诉Gradle明确注意注释还是别的吗? 正如@Ilya所建议的,我创建了一个最小的完整示例。 这个代码是可以编译的。 import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() […]

什么是Kotlin中的Unit对象

现在我正在学习Kotlin,在这个指南中我碰到了这两种方法,一种是Unit ,另一种是没有 与unit方法 fun printSum(a: Int, b: Int): Unit { println("sum of $a and $b is ${a + b}") } 没有Unit方法 fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}") } 我的问题是, Unit是做什么的? 是Java中的void东西? 如果这就像是void为什么上面的方法之一没有Unit运行就好了。 哪一个我应该使用时,我想我的方法什么都不返回? 也是最好的时机使用Unit 。 任何人都可以解释 因为它真的让我困惑。 提前致谢。

Kotlin中可能导致内存泄漏的语言功能是什么?

我是Kotlin的新手,我喜欢Android的新语言,但是我很害怕在生产中使用它,并导致内存泄漏,是否有任何指导新的Kotlin开发人员显示可能导致内存泄漏,什么是解决方案预防呢?

为什么kotlin不允许covariant mutablemap成为委托?

我是Kotlin的新手。 当我学习在地图中存储属性 。 我尝试下面的使用。 class User(val map: MutableMap<String, String>) { val name: String by map } class User(val map: MutableMap<String, in String>) { val name: String by map } class User(val map: MutableMap<String, out String>) { val name: String by map } 前两个都是工作,最后一个失败了。 用out修饰符, getName的字节码就像这样: public final java.lang.String getName(); 0 aload_0 [this] 1 getfield kotl.User.name$delegate […]

CORUTTINE_SUSPENDED和suspendCoroutineOrReturn在Kotlin

kotlin中的协程的概念是抽象暂停和回调的概念,并写出简单的顺序代码。 如果协程暂停或不在线,则无需担心,与线程类似。 suspendCoroutineOrReturn和COROUTINE_SUSPENDED的用途是什么,在什么情况下你会使用它们?

kotlin反射获取字段的列表

有没有一个等效的java反射foo.getClass().getFields() in Kotlin? 我只能发现,当我知道它的名字时,我可以访问一个字段,但是我想以通用的方式处理字段。

Kotlin访问Java类

为什么在Kotlin中,你需要访问他们使用的对象的Java类 MyActivity::class.java 我被告知与Kotlin与JS的互操作性…有什么想法?

无法在Eclipse中运行Kotlin应用程序

为了在Eclipse中创建我的第一个简单的Kotlin项目,我遵循Kotlin官方网站的Eclipse Luna入门教程中的步骤,即: 从Eclipse Marketplace安装Eclipse的Kotlin Plugin 打开Kotlin的观点,并创建一个Kotlin项目 使用main方法在“src”文件夹内创建文件“hello.kt” 用鼠标右键单击文件>运行方式> Kotlin应用程序 但是,我不断在Eclipse控制台中得到以下错误: 错误:无法找到或加载主类HelloKt 我已经仔细检查了我的项目的运行配置,它确实设置“主类”为HelloKt (我100%确定它不存在)。 另外,当我点击“搜索”按钮时,Eclipse发现的唯一项目是HelloKt – (default package) (这又不存在)。 为了完整起见,下面找到hello.kt文件的代码: fun main(args: Array<String>) { println("Hello, World") } 我注意到了教程和我所做的之间的差异: 我正在使用不同的Eclipse版本(本教程建议Luna;我使用Mars.2)。 我正在使用不同的JDK版本(教程不建议任何特定的版本,但从图像,我们可以看到他们已经使用jdk1.6.0_45 ,而我使用jdk1.7.0_79 。 请注意,我正在使用Kotlin Eclipse插件的最新版本,所以这不是在这篇文章中的情况 。 这些是我当前安装的版本: Kotlin 0.7.2.v20160930-0748 kotlin-eclipse-policy 0.7.2.v20160928-1525 kotlin-weaving-feature 0.7.2.v20160928-1525 运行应用程序时,这些差异中的任何一个都可能是错误的原因吗? 您是否看到/了解有关此情况的任何潜在原因或已知错误? 更新(2017年5月14日) 试用Eclipse Neon.3(eclipse.buildId = 4.6.3.M20170301-0400),JDK 1.8.0_111,Kotlin 0.8.2.v20170314-0957(kotlin-eclipse-policy 0.8.2.v20170314-0957,kotlin-weaving – 特征0.8.2.v20170314-0957,Equinox Weaving SDK […]

在IntelliJ中Kotlin未解决的参考

我开始在IntelliJ学习Kotlin的教程 。当我尝试运行示例即 fun main(args: Array<String>) { println("lol") } 执行被暂停这个消息Error:(5, 5) Kotlin: Unresolved reference: println这是我第一次使用IntelliJ.I从来没有在一个Java项目上工作。我错过了什么? 编辑:我已经看到了另一个问题。答案是无效的我的情况。