Android 泛型扩展属性接收器类型不匹配
以下代码:Android 泛型扩展属性接收器类型不匹配,android,kotlin,Android,Kotlin,以下代码: package com.gitlab.morality.navigable.support import android.support.v4.app.Fragment import android.support.v4.app.FragmentActivity import kotlin.reflect.primaryConstructor interface Navigable val <FragmentType> FragmentType.parameters
package com.gitlab.morality.navigable.support
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentActivity
import kotlin.reflect.primaryConstructor
interface Navigable
val <FragmentType> FragmentType.parameters : MutableMap<String, in Any>
where FragmentType : Fragment,
FragmentType : Navigable
by lazy { mutableMapOf<String, Any>() }
inline fun <reified FragmentType>
FragmentType.navigate(containerViewId : Int, vararg parameters : Pair<String, Any>)
where FragmentType : Fragment,
FragmentType : Navigable {
val fragment = FragmentType::class.primaryConstructor!!.call()
parameters.forEach { fragment.parameters[it.first] = it.second }
activity.supportFragmentManager.beginTransaction()
.replace(containerViewId, fragment)
.commit()
}
包com.gitlab.detaily.navigable.support
导入android.support.v4.app.Fragment
导入android.support.v4.app.FragmentActivity
导入kotlin.reflect.primaryConstructor
界面通航
val FragmentType.parameters:可变映射
其中FragmentType:Fragment,
碎片类型:可导航
通过lazy{mutableMapOf()}
在线娱乐
FragmentType.navigate(containerWebId:Int,vararg参数:Pair)
其中FragmentType:Fragment,
碎片类型:可导航{
val fragment=FragmentType::class.primaryConstructor!!.call()
parameters.forEach{fragment.parameters[it.first]=it.second}
activity.supportFragmentManager.beginTransaction()
.replace(containerWebID,片段)
.commit()
}
导致Kotlin 1.0.5出现以下编译器错误:
错误:(34,9)公共API内联函数无法访问非公共API
'内部打开乐趣():[错误:]在根包中定义'
错误:(34,18)未解析的引用。下列候选人中没有一个
由于接收器类型不匹配而适用:public val
碎片类型#1(类型参数
com.gitlab.detaily.navigable.support.navigate)。参数:
MutableMap,其中FragmentType:中定义的可导航
com.gitlab.detaily.navigable.support
我不明白我做错了什么。这些错误消息意味着什么
我可以通过将
参数
属性设置为可导航
的成员来解决这个问题,但是需要一个实现者来实现该属性,这就消除了这种技术的吸引力,即实现类不需要做任何特殊的事情,只需标记为可导航
即可使用可导航
功能。此时不支持具有多个接收器类型的扩展属性。当问题解决时,您可以投票获得通知。此时不支持具有多个接收器类型的扩展属性。当问题得到解决时,您可以投票获得通知