小编Erl*_*lik的帖子

用Java扩展Kotlin类要求我重新实现已经实现的方法

证明问题的最简单的代码是这样的:

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强制转换为StringInteger或任何对象,它也将起作用。但不是Int。

除了使用Integer并抑制Kotlin子类中的数百个警告外,还有什么聪明的解决方案?

更新:创建了问题

java kotlin

7
推荐指数
1
解决办法
88
查看次数

标签 统计

java ×1

kotlin ×1