val fooCtor = ::Foo
fooCtor
的推断类型为KFunction3<Int, Int, Int, Foo>
当我尝试将某些内容明确定义为KFunction3<...>
时,例如
val fooCtor: KFunction3<Int, Int, Int, Foo> = ::Foo
IDE /编译器告诉我KFunction3
是一个未解析的引用。
这是为什么? - 我尝试将kotlin-reflect添加到我的gradle.build文件中,但没有运气。
答案 0 :(得分:1)
我尝试使用IntelliJ IDEA 2017.2.6重现您的问题:
[System.Serializable]
public class DropTable
{
public List<LootDrop> Loot;
public DropTable()
{
Loot = new List<LootDrop>();
}
}
这没有任何问题编译。
为什么KFunction3中的返回类型为fun main(args: Array<String>) {
fun foo(x: Int, y: Int, z: Int) = x % 2 != 0
val f = ::foo
val f1: KFunction3<Int, Int, Int, Boolean> = ::foo
}
?你的Foo
函数会自行返回吗?
更新1:
我使用没有错误的构造函数测试了相同的内容:
Foo
使用Kotlin 1.2.31并且没有额外的库。
答案 1 :(得分:1)
通过KFunction3
不是标准库的一部分,您必须手动导入它。
import kotlin.reflect.KFunction3
这解决了我的问题。