Cómo crear un constructor vacío para la clase de datos en Kotlin Android

Tengo 10 + parámetro en una clase de datos, quiero inicializar la clase de datos con el constructor vacío y establecer los valores sólo para unos pocos parámetros utilizando setter y pasar el objeto al servidor.

data class Activity( var updated_on: String, var tags: List<String>, var description: String, var user_id: List<Int>, var status_id: Int, var title: String, var created_at: String, var data: HashMap<*, *>, var id: Int, var counts: LinkedTreeMap<*, *>, ) 

Uso:

  //Something like this will be easy val activity = Activity(); //but it needs all the parameters activity.title = "New Computer" sendToServer(activity) //It requires all the paraments, How to avoid this and use something like above code val activity = Activity(null,null,null,null,null,"New Computer",null,null,null,null); sendToServer(activity) 

Usted tiene 2 opciones aquí:

  1. Asigne un valor predeterminado a cada parámetro del constructor principal :

     data class Activity( var updated_on: String = "", var tags: List<String> = emptyList(), var description: String = "", var user_id: List<Int> = emptyList(), var status_id: Int = -1, var title: String = "", var created_at: String = "", var data: HashMap<*, *> = hashMapOf<Any, Any>(), var id: Int = -1, var counts: LinkedTreeMap<*, *> = LinkedTreeMap<Any, Any>() ) 
  2. Declare un constructor secundario que no tiene parámetros:

     data class Activity( var updated_on: String, var tags: List<String>, var description: String, var user_id: List<Int>, var status_id: Int, var title: String, var created_at: String, var data: HashMap<*, *>, var id: Int, var counts: LinkedTreeMap<*, *> ) { constructor() : this("", emptyList(), "", emptyList(), -1, "", "", hashMapOf<Any, Any>(), -1, LinkedTreeMap<Any, Any>() ) } 

Si usted no confía en la copy o los equals de la clase de la Activity o no utiliza los métodos autogenerated de data class en todos que usted podría utilizar la clase regular como así:

 class ActivityDto { var updated_on: String = "", var tags: List<String> = emptyList(), var description: String = "", var user_id: List<Int> = emptyList(), var status_id: Int = -1, var title: String = "", var created_at: String = "", var data: HashMap<*, *> = hashMapOf<Any, Any>(), var id: Int = -1, var counts: LinkedTreeMap<*, *> = LinkedTreeMap<Any, Any>() } 

No todos los DTO tiene que ser una data class y viceversa. De hecho, según mi experiencia, considero que las clases de datos son particularmente útiles en áreas que implican una lógica de negocio compleja.

Crear una clase seguida por la palabra clave data y crear un constructor por defecto

Clase de datos Elemento (nombre de valor: Cadena, dirección de val: Cadena)

  • Call class 'constructor por reflexión con Kotlin
  • Kotlin - La forma más idiomática de convertir una lista a una MutableList
  • Archivo Kotlin vs Clase. ¿Cual es la diferencia?
  • Controles de pelusa de Kotlin y android
  • JaCoCo devuelve 0% de cobertura con Kotlin y Android 3.0
  • Sabor del producto: Clase duplicada encontrada
  • Android Studio 3 canary y Kotlin
  • Android databinding error de prueba de unidad Error al analizar las opciones del compilador de enlace de datos. Params:
  • Singleton con parámetro en Kotlin
  • Este tipo tiene un constructor y debe ser inicializado aquí - Kotlin
  • Prueba de unidad en la función de extensión de Kotlin en las clases de SDK de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.