,java,kotlin,lambda"/>

首页 > 解决方案 > Kotlin:“公共”属性公开其“本地”类型参数

问题描述

interface A {
    fun f() : String
}

val B = { attr : String ->
    object : A {
        override fun f() = attr
    }
}

我在以下定义中收到此错误B

'public' property exposes its 'local' type argument <no name provided>

这个错误的原因是什么?

标签: javakotlinlambda

解决方案


您正在返回一个匿名单例对象,而 kotlin 无法找出未提供名称的类型。您可以明确指定类型B来解决此问题

val B: (String) -> A = { attr: String ->
    object : A {
        override fun f() = attr
    }
}

推荐阅读