【发布时间】:2018-08-06 16:28:37
【问题描述】:
我在一个 Java 项目中工作,我负责将一些类迁移到 Kotlin。有一个具有下一个方法的 Java 抽象类:
protected abstract boolean init(params) {
...
}
并且这个类在一个公共类中被扩展,所以我重写了这样的方法:
@Override
protected boolean init(params) {
...
}
因此,当尝试将此公共类迁移到 Kotlin 时,
override protected fun init(params): Boolean{}
我收到错误 Kotlin: modifier 'override' is not applicable to 'initializer',因为方法的名称 init 是 Kotlin 中的关键字。我知道解决这个问题的一种方法是更改抽象类中方法的名称(例如,从 init 到初始化),但它在项目中有大量用途,所以我想知道是否有更好的方法来解决这个问题在花时间重构整个项目之前。
【问题讨论】:
-
欢迎来到 StackOverflow!您的代码在其他方面似乎在语法上不正确。在 Kotlin 中,
init是一个软关键字,特别是允许作为函数名称。请发布重现错误的完整代码示例 (MVCE)。 -
此外,您应该在 Kotlin 中使用
Boolean类型,而不是boolean。 -
在 Java 中,如果您要覆盖的方法是公共的,则覆盖也必须是公共的。
-
这是什么
params?您可以发布完整的方法签名吗?我试着写这个,但它对我来说编译得很好。
标签: java intellij-idea kotlin migration