【发布时间】:2026-01-22 06:40:01
【问题描述】:
我正在尝试向我的应用程序添加一些特定于类的功能,并且我希望在类层次结构中拥有静态方法,其中每个类都实现自己的方法版本。我知道将这些视为覆盖会产生难以预测的行为,但我打算只调用以类名作为前缀的方法。很喜欢
// Java
public class Base {
public static int mapString(@NonNull String s) {
int value = Child.mapString(s);
if (value < 0) {
return defaultValue;
}
}
}
// Kotlin
class Child: Base() {
companion object {
@JvmStatic fun mapString(s: String): Int {
return when {
"a" -> 1
else -> -1
}
}
}
}
像这样,Android Studio 抱怨 Child.mapString() 意外覆盖,但是如果我添加 override 关键字,那么 Android Studio 抱怨没有找到要覆盖的东西。
我可以对 Kotlin 隐藏 Java 基类的静态方法吗?
【问题讨论】:
-
"Android Studio 抱怨 Child.mapString() 意外覆盖" 这只是一个应该报告的错误。没有覆盖。