如何在 kotlin companion object 中覆盖从 java class 继承的 getter
How to override inherited getter from java class in a kotlin companion object
首先,Manager
(一个Kotlin class)继承自JavaPlugin
(一个Java class)。
此 Java 插件 class 包含一个 getter 方法 getPlugin(Class<T>)
。
经理class:
class Manager : JavaPlugin() {
companion object {
[more code...]
lateinit var plugin: Manager
private set
}
[more code...]
}
现在回到任何其他 Java class(我的项目是两种语言的混合)我想调用 Manager.getPlugin()
,但在 Java 中仍然存在只有 JavaPlugin
class 中的方法被继承了。
在 Kotlin 文件中,我能够检索插件变量,但在 Java 文件中,我不知道这怎么可能。
我知道我现在可以使用 Manager.Companion.getPlugin()
,但是 我不想更改旧的 Java 代码(其中包含旧的静态 Manager.getPlugin()
呼唤)。
我只是在这里对同伴 object 有误,应该使用不同的东西来用静态 getter 模拟我的旧静态变量吗? (我读到你可以将变量放在 class 之外,但我不知道如何访问这些变量然后在名称 Manager
下(它只适用于 ManagerKt
。)
我希望有人对这个问题有更好的标题并进行编辑。
注释你的方法@JvmStatic
。
首先,Manager
(一个Kotlin class)继承自JavaPlugin
(一个Java class)。
此 Java 插件 class 包含一个 getter 方法 getPlugin(Class<T>)
。
经理class:
class Manager : JavaPlugin() {
companion object {
[more code...]
lateinit var plugin: Manager
private set
}
[more code...]
}
现在回到任何其他 Java class(我的项目是两种语言的混合)我想调用 Manager.getPlugin()
,但在 Java 中仍然存在只有 JavaPlugin
class 中的方法被继承了。
在 Kotlin 文件中,我能够检索插件变量,但在 Java 文件中,我不知道这怎么可能。
我知道我现在可以使用 Manager.Companion.getPlugin()
,但是 我不想更改旧的 Java 代码(其中包含旧的静态 Manager.getPlugin()
呼唤)。
我只是在这里对同伴 object 有误,应该使用不同的东西来用静态 getter 模拟我的旧静态变量吗? (我读到你可以将变量放在 class 之外,但我不知道如何访问这些变量然后在名称 Manager
下(它只适用于 ManagerKt
。)
我希望有人对这个问题有更好的标题并进行编辑。
注释你的方法@JvmStatic
。