Kotlin教程 init代码块

本章节讲述Kotlin中init代码块的相关知识

简介

Kotlin中的init代码块用于初始化属性,并执行在创建类的实例需要运行的代码。它是主要构造函数的一部分,在对象初始化阶段被调用。有点类似于Java中的static代码块,在创建类时就需要初始化的内容

如果有多个构造函数,无论调用哪个构造函数,init块总是会被执行

代码

class TestInit(s: String, i: Int) {

    var name: String? = null
    var age = 0

    init {
        this.name = s
        this.age = i
        Log.d("KotlinActivity", "init代码块: $name, $age")
    }

}

调用

val entity = TestInit("张三", 20)
Log.d("KotlinActivity", "姓名:${entity.name}")

结果

D/KotlinActivity: init代码块: 张三, 20

D/KotlinActivity: 姓名:张三

kotlin代码编译成java代码

@Metadata(
   mv = {1, 5, 1},
   k = 1,
   d1 = {"\u0000\u0018\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\b\n\u0002\b\f\u0018\u00002\u00020\u0001B\u0015\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005¢\u0006\u0002\u0010\u0006R\u001a\u0010\u0007\u001a\u00020\u0005X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\b\u0010\t\"\u0004\b\n\u0010\u000bR\u001c\u0010\f\u001a\u0004\u0018\u00010\u0003X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\r\u0010\u000e\"\u0004\b\u000f\u0010\u0010¨\u0006\u0011"},
   d2 = {"Lcom/example/myapplication/kotlin/TestInit;", "", "s", "", "i", "", "(Ljava/lang/String;I)V", "age", "getAge", "()I", "setAge", "(I)V", "name", "getName", "()Ljava/lang/String;", "setName", "(Ljava/lang/String;)V", "MyApplication.app"}
)
public final class TestInit {
   @Nullable
   private String name;
   private int age;

   @Nullable
   public final String getName() {
      return this.name;
   }

   public final void setName(@Nullable String var1) {
      this.name = var1;
   }

   public final int getAge() {
      return this.age;
   }

   public final void setAge(int var1) {
      this.age = var1;
   }

   public TestInit(@NotNull String s, int i) {
      Intrinsics.checkNotNullParameter(s, "s");
      super();
      this.name = s;
      this.age = i;
      Log.d("KotlinActivity", "init代码块: " + this.name + ", " + this.age);
   }
}

红框里的内容,就是Kotlin中init代码块中的内容。

总结

Kotlin中的init代码块,相当于Java中的普通代码块,只不过是在构造方法中执行。作用类似于Java中的static代码块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值