我们可以在data class前面添加@NoArg注解,这样编译器就能为其生成一个无参构造函数。使用示例如下: 代码语言:javascript 复制 @NoArg dataclassUser(@TableId(value="id",type=IdType.AUTO)varid:Int?,varuserName:String?,//用户名varage:Int?,//年龄varpassword:String?,//密码varname:String?,//姓名varema...
4.1、使用 data class 没有设置无参构造函数 在Kotlin 中,不需要自己动手去写一个 JavaBean,可以直接使用 DataClass,使用 DataClass编译器会默默地帮我们生成一些函数。例如: 代码语言:java 复制 dataclassPerson(varname:String,varage:Int){} 这个Bean是用于接收服务器数据,通过Gson转化为对象的。例如: 代码语言:...
data class User(val name: String, val age: Int) 编译器会为数据类(dataclass)自动生成以下函数:equals()/hashCode()toString()默认输出"User(name=John, age=42)"componentN()按声明顺序对应于所有属性copy() 如果数据类需要无参构造函数,则所有属性必须有默认值:dataclassUser(valname:String="",valage:...
如果数据类需要无参构造函数,则所有属性必须有默认值: dataclassGirl(varname:String="",varage:Int=0,varheight:Int=0,varaddress:String="") vargirl3:Girl=Girl() 1. 2. 3. copy函数 当要复制一个对象,只改变一些属性,但其余不变,copy()就是为此而生 vargirl1:Girl=Girl("嫚嫚",29,160,"廊坊"...
将注解用到 data class 中 @NoArgOpenDataClassdataclassCountry(varid:Int,varname:String,varcontinent:String) 经过上面5个步骤,编译器就会帮我去掉final关键字,并且生成一个无参的构造方法,但是由于是在编译器做的操作,所以在源代码中还是无法直接使用无参的构造函数,只能通过反射来使用。
哈哈,感谢回答,无参构造函数不是我想要的,这里mybatis需要的是一个有两个long类型参数的构造函数,已经找到解决办法了。添加一个两个long参数的二级构造函数就好了,具体代码是这样的: data class Child( var stuId: Long, var schoolId: Long, var stuName: String = "", var stuAvatar: String = "" ) {...
data class Person(val id: Long, val name: String, val age: Int) 与java的bean类相比,kotlin的data类不能被继承,并且属性要全部写到构造函数当中,没有无参的构造函数。确实简便了许多! 并且编译器会为data类生成了一些好用的方法: val book = Book(0, "Kotlin in Action", Person(1, "Dmitry", 40...
data class Person(val name: String, val age: Int) { constructor(name: String) : this(name, 0) constructor(age: Int) : this("", age) } ``` 这个例子中,有三个构造函数:主构造函数接受一个name和age参数,次构造函数只接受一个name参数,并调用了主构造函数来设置age属性的默认值为0,还有一个次...
1,kotlin在有主构造函数和次构造函数时,次构造函数必须或直接或间接的调用主构造函数(间接指的是,有一个次构造函数调用了主构造函数,其他次构造函数可以调用该次构造函数) 2,data class必须至少有一个主构造函数的参数!也就是说data class必须要有主构造函数 ...
这个时候其实还是不能使用无参的构造函数的,因为我们写的是在编译器之前,我们要无参,需要反射等手段,但是通过查看字节码可以看到 编译器是生成了一个无参的构造,当然在Android Studio中 可以不用这样实现,这里当做了解一下即可。 Github地址: