在 Kotlin 中调用 Java 静态方法的可能性

Possibility to call a Java static method in Kotlin

假设我们有一个Java静态方法:

//Java code
public static void printFoo() {
    System.out.println("foo");
}

可以在 Kotlin 中调用该方法吗?

。它记录在 Java Interop

http://kotlinlang.org/docs/reference/java-interop.html

文档显示了以下示例

if (Character.isLetter(a)) {
 // ...
}

我看到的唯一警告是它们不能像在 Java 中那样通过实例传递并在 class 的实例上访问,但这通常被认为是不好的做法.

是的,你可以。 Java代码:

public class MyJavaClass {
    public static void printFoo() {
        System.out.println("foo");
    }
}

Kotlin 代码:

fun main(args: Array<String>) {
    MyJavaClass.printFoo()
}

很简单=)

0wl 的回答大体上是正确的。

我只是想补充一点,一些 Java classes 被映射到特殊的 Kotlin classes。在这种情况下,您必须完全限定 Java class 才能正常工作。

示例:

fun main(args: Array<String>) {
    println(java.lang.Long.toHexString(123))
}

在 Java 中可以从子 类 调用静态方法,在 Kotlin 中这是不可能的。如果是这种情况,请改为从父级调用该方法。

Test.java:

public class Test {
    public static void printFoo() {
        System.out.println("foo"); 
    }
}

Test2.kt:

class Test2: Test()

// Test2.printFoo() // doesn't work
Test.printFoo() // Works

有关详细信息,请参阅此