'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