java中的静态代码块在kotlin中的表现形式
在java
中我们有时候会用到类的静态代码块来初始化一些变量,那么在kotlin
中如何表示呢?
看以下代码:
TestStatic.java
public class TestStatic {
static {
System.out.println("static test");
}
}
这段代码,在kotlin
中可以这样表示:
TestStatic.kt
class TestStatic {
companion oject {
init {
println("static test")
}
fun test(){
println("test")
}
}
}
编译后的java
代码:
...
public final class StaticTest {
public static final StaticTest.Companion Companion = new StaticTest.Companion((DefaultConstructorMarker)null);
static {
String var0 = "static";
System.out.println(var0);
}
...
public static final class Companion {
public final void test() {
String var1 = "test";
System.out.println(var1);
}
private Companion() {
}
// $FF: synthetic method
public Companion(DefaultConstructorMarker $constructor_marker) {
this();
}
}
}
可以看到,init
方法最终被编译成了static
代码块。
本文链接:htpps://www.xiaowujiang.cn/post/8f46bf8a.html