Kotlin构造函数(constructor)完全解析

作者: 蓝不蓝编程 | 来源:发表于2019-04-08 16:06 被阅读4次

    简要介绍

    Kotlin的类必须有一个主构造函数,可以有多个次要构造函数.

    主构造函数

    1. 写法一(主构造函数初始化代码在init块中)

    class User constructor(name: String) {
    val name: String
    init {
    this.name = name
    }
    }

    2. 精简写法

    class User constructor(name: String) {
    val name: String = name
    }

    3. 最精简写法

    class User(val name: String)
    反编译之后对应的java类(注:上面写法中,如果val替换为var,则对应java里会出现setName方法,表示此属性可修改):

    public final class User {
       @NotNull
       private final String name;
    
       @NotNull
       public final String getName() {
          return this.name;
       }
    
       public User(@NotNull String name) {
          Intrinsics.checkParameterIsNotNull(name, "name");
          super();
          this.name = name;
       }
    }
    

    如果不需要将构造函数中参数同时作为类属性,也可以写成如下形式(constructor表示构造函数,里面执行初始化的处理):

    class User
    {
        constructor(name:String)
        {
        }
    }
    

    对应java代码:

    public final class User {
       public User(@NotNull String name) {
          Intrinsics.checkParameterIsNotNull(name, "name");
          super();
       }
    }
    

    次要构造函数

    必须要要调用主构造函数或已经调用了主构造函数的次要构造函数

    class User(val name: String)
    {
        constructor():this("")
        {
        }
    }
    

    对应java代码:

    public User(@NotNull String name) {
          Intrinsics.checkParameterIsNotNull(name, "name");
          super();
          this.name = name;
       }
    
       public User() {
          this("");
       }
    

    附录

    官方参考文档:https://kotlinlang.org/docs/reference/classes.html

    安卓开发技术分享: https://www.jianshu.com/p/442339952f26
    点击关注专辑,查看最新技术分享
    更多技术总结好文,请关注:「程序园中猿」

    相关文章

      网友评论

        本文标题:Kotlin构造函数(constructor)完全解析

        本文链接:https://www.haomeiwen.com/subject/deauiqtx.html