5

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?

Prabhat kumar
  • 319
  • 2
  • 13
  • 1
    `data class model_for_single_row (val mId:String,val mTitle:String,val mDesc:String)` Will create a class with getters (and setters, if `var` used) for params you provided. If you want to omit one or more of them, you can do so by making them nullable (and maybe provide a default value) `data class MyClass(val name: String, val age: Int = null)` then, usage would be `val user = MyClass("Jerry")` – Krizzu Jun 30 '20 at 07:43
  • 1
    check this link https://stackoverflow.com/questions/37873995/how-to-create-empty-constructor-for-data-class-in-kotlin-android – darwin Jun 30 '20 at 07:44
  • 1
    I think an empty / default constructor for a `data class` in Kotlin is somehow pointless... This kind of class is simply not meant to be initialized without initializing one or more of its attributes. But it may be possible, read about [Secondary Constructors](https://kotlinlang.org/docs/reference/classes.html), please. – deHaar Jun 30 '20 at 07:45

1 Answers1

4

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.

Animesh Sahu
  • 5,281
  • 2
  • 7
  • 33