所以我有3个类-基本Java-> Kotlin后代-> Java后代。
public class JavaParentClass {
public <T> void doSmth(List<T> item) {}
}
open class KotlinDescendant : JavaParentClass() {
override fun <T : Any?> doSmth(item: MutableList<T>?) {
super.doSmth(item)
}
}
public class JavaDescendant extends KotlinDescendant {
void someMethod() {
doSmth(new ArrayList<String>());
}
}
对于Android Studio中的
JavaDescendant
类编译器,显示错误“歧义方法调用。在KotlinDescendant和JavaParentClass中都匹配”。因此,据我了解,皮棉只是不了解
doSmth
实际上在KotlinDescendant
类中被覆盖。尽管它在运行时运行良好,但可以采取什么措施来避免此错误?
最佳答案
当您在Kotlin文件中编写Java代码时,Android Studio会抱怨,反之亦然,如果您将3个类分别放在一个自己的文件中,则无论从Java代码还是Kotlin代码中调用它们都不会产生任何错误。