Kotlin - KFunction3未解决的参考

时间:2018-05-01 14:49:21

标签: kotlin

val fooCtor = ::Foo

fooCtor的推断类型为KFunction3<Int, Int, Int, Foo>

当我尝试将某些内容明确定义为KFunction3<...>时,例如

val fooCtor: KFunction3<Int, Int, Int, Foo> = ::Foo

IDE /编译器告诉我KFunction3是一个未解析的引用。

这是为什么? - 我尝试将kotlin-reflect添加到我的gradle.build文件中,但没有运气。

2 个答案:

答案 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

这解决了我的问题。