所以我有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代码中调用它们都不会产生任何错误。

10-08 01:29