在 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
有关详细信息,请参阅此 。
假设我们有一个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
有关详细信息,请参阅此