gpt4 book ai didi

kotlin - Kotlin:从类对象获取父类(super class)-对象推断错误

转载 作者:行者123 更新时间:2023-12-02 13:39:29 24 4
gpt4 key购买 nike

以下代码应遍历传递的对象的类的父类(super class)链,直到到达顶层。

protected fun getBestMethodFor(o: Any): Method? {
val nodeClass = o.javaClass
val objectClass = Any::class.java
...

// Go through superclasses.
var c = nodeClass
while (c != objectClass && ans == null) {
debugMsg("Looking for class match for " + c.name)
...
c = c.superclass
}
...
}

这导致2个错误:
Error:(57, 17) Kotlin: Type mismatch: inferred type is Class<in Any!>! but Class<Any> was expected
Error:(57, 19) Kotlin: Type inference failed. Expected type mismatch: inferred type is Class<in Any!>! but Class<Any> was expected

为什么会失败,我需要更改什么才能解决此问题?

注意:该代码是使用IntelliJ的转换器从Java自动转换而来的。

最佳答案

在Java中, Class<T>.getSuperClass() 返回Class<? super T>。在Kotlin中,这的等式是Class<in T>

在您的代码中,var c = nodeClass具有隐式类型的Class<Any>,它与Class<in T>不兼容。

要解决此问题,只需直接指定类型c:
var c: Class<in Any> = nodeClass

关于kotlin - Kotlin:从类对象获取父类(super class)-对象推断错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com