如何覆盖Kotlin中的Java公共类方法?

我需要从Kotlin类中的Java公共类重新定义/重写方法:

// Java public class BaseOne { public static void m1() {} } // Kotlin class BaseTwo : BaseOne() { override fun m1() {} } 

但得到一个错误: m1 overrides nothing

如果我删除override注释,我得到Accidental override: The following declarations have the same JVM signature

在Java这工作正常,但不是在Kotlin 🙁

UPD:工作的Java代码

 public class BaseTree extends BaseOne { public static void m1() {} } 

UPD2 “Curiouser和curiouser!” (с)

我有下一个代码:

 // Java class public class BaseOne { public static void m1() { System.out.println("BaseOne"); } } // Kotlin class class BaseTwo : BaseOne() { companion object { fun m1() { println("BaseTwo") } } } // Java class public class BaseThree extends BaseOne { public static void m1() { System.out.println("BaseThree"); } } 

当我从Java运行这个代码时,

 public class Main { public static void main(String[] args) { BaseOne.m1(); BaseThree.m1(); BaseTwo.m1(); } } 

我收到:

 BaseOne BaseThree BaseOne 

正如你所看到的 – 覆盖/重新定义/“隐藏”不起作用

但是,如果我从Kotlin的main运行它

 fun main(args: Array) { BaseOne.m1() BaseThree.m1() BaseTwo.m1() } 

全部按预期工作:

 BaseOne BaseThree BaseTwo 

我的另一个问题是 – 如何编写具有相同行为的代码? 有关于它的文档吗?

您正在重写一个静态方法,重写取决于有一个类的实例。

 public class BaseOne { public void m1() {} }