安装员在Kotlin超载

当试图定义一个接受可以用来构造一个属性的参数类型的setter时, class Buffer(buf: String) {} class Foo { var buffer: Buffer? = null set(value: String) { field = Buffer(value) } } 我收到错误消息: Setter参数类型必须等于属性的类型 那么Kotlin的做法是什么?

Kotlin:公共获得私人设置变种

在kotlin中定义一个具有公共getter和private(只有内部可修改)setter的var的正确方法是什么?

Android:与Butterknife的Kotlin

我正在尝试将Kotlin与Butterknife一起用于我的Android应用程序。 这是我的build.gradle dependencies { … compile 'com.jakewharton:butterknife:8.0.1' kapt 'com.jakewharton:butterknife-compiler:8.0.1' } kapt { generateStubs = true } 我也有一个EditText,我想用ButterKnife在更改时显示一条消息: @OnTextChanged(R.id.input) fun test() { toast(1) } 但是,没有任何反应。 我把一个断点放入函数中 – 甚至没有执行。 PS:我听说过kotterknife,但是我已经看到了纯粹的Butterknife的例子 。 我究竟做错了什么?

如何使用Kotlin设置OnEditorActionListener

所以我有这个Java代码: editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { doSomething(); return true; } return false; } }); 我已经设法得到这(我甚至不知道这是正确的方式): editText.setOnEditorActionListener() { v, actionId, event -> if(actionId == EditorInfo.IME_ACTION_DONE){ doSomething() } else { } } 但我得到一个错误Error:(26, 8) Type mismatch: inferred type is kotlin.Unit but kotlin.Boolean was expected […]

Kotlin序列函数未解决的参考

Kotlin 1.0.0 IDEA 2016.1 我发现了一些用于创建序列的新sequence函数(不再称为stream )的引用。 JetBrains博客提供了以下示例: val elements = sequence(1, { x -> x + 1}) val elements = listOf(1, 2, 3, 4).sequence() AgileWombat博客给出了类似的例子。 val squares = sequence(1) {it + 1}.map {it * it} 但是,当我尝试使用这些示例时,无论是在REPL还是在IDE中(IDEA 2016.1),我都会得到以下结果: >>> val squares = sequence(1) {it + 1}.map {it * it} error: unresolved reference: sequence val squares = […]

事件与kotlin和butterknife处理

将java更改为kotlin代码后,ButterKnife单击注释不起作用。 @OnClick(R.id.btnlogin) internal fun onLogin() { if (isValid) { getLoginAPi() } }

Gradle kotlin不支持的方法Dependencies.getAtoms()

刚刚用Studio 3.0 Canary 3开始一个新的Android项目使用kotlin,只是试图让它做一个gradle项目同步。 目前失败 Error:Unsupported method: Dependencies.getAtoms(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you connect to. Alternatively, you can ignore this exception and read other information from the model. 任何人都知道这是什么意思,如何解决这个问题? 可能只是需要改变一些东西的版本。 gradle包装: #Mon Jun 19 08:02:32 […]

Kotlin getter覆盖+ MongoDB

我是Kotlin开发的新手,我无法弄清楚如何处理这个问题。 我有以下Kotlin数据类映射到MongoDB集合(Spring Data MongoDB): @Document(collection = "orders") data class OrderEntity @PersistenceConstructor constructor(@Id val id: ObjectId? = null, val place: String, var date: Date, val closed: Boolean = false, val price: Int = 0) 我想重写默认的id getter并返回一个字符串,而不是ObjectId。 似乎“ID”字段名称不能改变,因为我得到消息“自定义ID属性的字段名称不允许!自定义名称将不被考虑! 所以我不能使用总是建议的_id解决方案。 怎么能做到这一点? 我错过了什么吗?

遗产在Kotlin

试图找出Kotlin最后的日子,阅读了文档,并找到一个例子。 在文章的底部: interface A { fun foo() { print("A") } fun bar() } interface B { fun foo() { print("B") } fun bar() { print("bar") } } class C : A { override fun bar() { print("bar") } } class D : A, B { override fun foo() { super<A>.foo() super<B>.foo() } } 现在,如果我们从A中派生出一个具体的类C,我们显然必须重写bar()并提供一个实现。 如果我们从A和B派生出D, […]

生成Kotlin类图

我正在寻找一个工具,Intellij Idea插件,或者任何能够从Kotlin源文件生成UML类图的东西。 Intellij Idea 15的“Show diagram …”工具仅适用于.java文件。 谷歌没有帮助,但我仍然希望有机会为此找到一个工具。