'Add 2 or more constructors in kotlin
how to add 2 or more constructors ?? i know the use of data class in kotlin, but i am not getting what exactly this keyword is in kotlin and why we have to put anything inside this?
public class Model {
public String mId, mTitle, mDesc;
public Model() {
}
public Model(String mId, String mTitle, String mDesc) {
this.mId = mId;
this.mTitle = mTitle;
this.mDesc = mDesc;
}
public String getmId() {
return mId;
}
public void setmId(String mId) {
this.mId = mId;
}
public String getmTitle() {
return mTitle;
}
public void setmTitle(String mTitle) {
this.mTitle = mTitle;
}
public String getmDesc() {
return mDesc;
}
public void setmDesc(String mDesc) {
this.mDesc = mDesc;
}
}
I know kotlin but not that much.
how i changed
data class model_for_single_row (val mId:String,val mTitle:String,val mDesc:String){
constructor():this()
}
it gives me error to put something inside this. why we use this here and why we should put, and what we should put?
Solution 1:[1]
Default value of String in java is null
, which isn't the case in Kotlin.
You can make fields nullable and attach their defualt values to null:
data class model_for_single_row(
val mId: String? = null,
val mTitle: String? = null,
val mDesc: String? = null
)
You can call it like:
model_for_single_row()
model_for_single_row("id")
model_for_single_row("id", "title")
model_for_single_row("id", "title", "desc")
model_for_single_row(mTitle = "title")
Parameters not supplied will be null here.
Solution 2:[2]
Hope it could be useful, the this keyword is used concerning constructors inside a class :
1 - to delegate from a secondary constructor to the primary constructor, like this :
class Car(val id: String, val type: String) {
constructor(id: String): this(id, "unknown")
}
2 - to delegate from a secondary constructor to another secondary constructor where no primary constructor is present; so here in this example there is a child class with more than one secondary constructor derived from a parent class with more than one secondary constructor and no primary constructor as well:
fun main(args: Array<String>) {
val p1 = AuthLog("Bad Password")
}
open class Log {
var data: String = ""
var numberOfData = 0
constructor(_data: String) {
}
constructor(_data: String, _numberOfData: Int) {
data = _data
numberOfData = _numberOfData
println("$data: $numberOfData times")
}
}
class AuthLog: Log {
constructor(_data: String): this("From AuthLog -> + $_data", 10) {
}
constructor(_data: String, _numberOfData: Int): super(_data, _numberOfData) {
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Animesh Sahu |
Solution 2 | android_dev71 |