在我的代码中,我有一个方法publishMessage
需要从 class 扩展类型Message
。在此方法publish
中调用需要message
类型T
。
这给出了错误 > 类型不匹配;找到了Message
,需要T
。
这是否与T
需要成为Message
使用方法声明的类的扩展有关?我不明白为什么不能这样做。
在我的脑海中,这样的类型参数T
可以是任何东西
我的课
fun <T : Message> publishMessage(topic: String, type: Class<T>, message: Message) {
val node = findOrCreateNode(topic, type)
node.publish(message) // Type mismatch; found `Message`, required `T` .
}
节点类
fun publish(message: T) {
// Implementation
}
在我的脑海中,这样一个类型为 T 的参数可以是任何东西
是的,它可以是任何东西,但编译器希望确保您的类型没有任何问题。因此,您必须像这样创建 Node 对象Node<Message>()
或将publishMessage
方法签名更改为fun <T : Message> publishMessage(topic: String, type: Class<T>, message: T)
. 在这种情况下,编译器可以保证类型安全,错误就会消失。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句