primary constructor在类的首部,关键字init被称作初始化代码块,由于放在首部,不能包含任何初始化执行语句,那么可以把初始化执行语句放在init中, class Person constructor(username: String, age: Int){ private val username: String private var age: Int init{ this.username = username this.age = age } } 1....
由此可见, Kotlin 主构造器并不是传统意义上的构造器,它更像 Java 的初始化块,或者说是对初始化块的增强一-Java 的初始化块不能传入参数: Kotlin 通过主构造器的设计,允许为初始化块传入参数。 class Apple(name: String) { init { println("name is $name") } } 调用函数: Apple("红富士") 运行结果: ...
class Person constructor(firstName: String) {init {println("FirstName is $firstName")}} 在小括号内的构造函数参数,会自动生成类的成员属性,可以通过主构造器来定义属性并初始化属性值 数据类data class 对于一些只保存数据的类(贫血模型 笑),我们可以在class的定义前加上data关键字 data class User(val nam...
name=$name") // 1 } constructor(name: String, age: Int): this(name) { println("People constructor, name=$name, age=$age") // 2 } } class Student : People { init { println("Student init, name=$name") // 3 (此处不能访问age和...
按理说,我们的 data class 是有构造方法的,说找不到构造方法倒也有些不公平,应该确切的说是找不到合适的构造方法。前面那句错误信息告诉我们 MyBatis 想要找的构造方法是下面的签名: init(java.lang.Integer, java.lang.String, java.lang.Integer, java.lang.String) 我们的 data class 的构造方法呢? init...
// 在类名后面直接写的构造器称为主构造器,age直接在构造器里声明的,称为构造属性classPersonconstructor(name:String,privatevarage:Int){companion object{constvalTAG="Person"}varname:String?=nullprivatevarsex:String?=nullprivatevarweight:Float?=null// 初始化代码块init{sex="男"}// 次级构造函数,必须要...
定义Kotlin类 , 在 类中 定义成员属性 , 会自动生成 getter 和 setter 方法 ; 在Kotlin 中定义如下类 , 在其中定义两个字段 : 代码语言:javascript 代码运行次数:0 classHello{varname="Tom"varage=18} 然后双击 Shift 选择 " Show Kotlin Bytecode " , ...
init初始化块里的属性赋值和函数调用 次构造函数里的属性赋值和函数调用 延迟初始化 lateinit关键字用来延迟初始化 isInitialized可以检查是否初始化完成 classclasstest{varname ="Java"lateinitvarcode:Stringfunready(){ code ="hahah"}fungo(){if(::code.isInitialized) { ...
(Ljava/lang/Object;Ljava/lang/String;)V12:new#2//class com/kotlin/test2/Person15: dup16: aload_117: iload_218: aload_319: invokespecial #49//Method "<init>":(Ljava/lang/String;ILjava/lang/String;)V22: areturnpublicstaticcom.kotlin.test2.Person copy$default(com.kotlin.test2.Person, ...
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 报错时使用的是 fastjson:1.1.67.android 改成fastjson:1.2.41 程序就可以正常运行了。 @wenshao问一下什么版本可以解决啊?data class 使用的场景实在太多了 @wenshao data class JsonDemo1(var a: JsonDemo2 = JsonDemo2()) ...