证明问题的最简单的代码是这样的:
Kotlin的主要界面:
interface Base <T : Any> {
fun go(field: T)
}
Run Code Online (Sandbox Code Playgroud)
实现它的抽象类及其方法:
abstract class Impl : Base<Int> {
override fun go(field: Int) {}
}
Run Code Online (Sandbox Code Playgroud)
Java类:
public class JavaImpl extends Impl {
}
Run Code Online (Sandbox Code Playgroud)
它应该可以,但是不能。错误是
类'JavaImpl'必须声明为抽象,或者必须在'Base'中实现抽象方法'go(T)'
如果JavaImpl类位于Kotlin中,它将起作用。同样,如果将T强制转换为String或Integer或任何对象,它也将起作用。但不是Int。
除了使用Integer并抑制Kotlin子类中的数百个警告外,还有什么聪明的解决方案?
更新:创建了问题。