J'ai plus de 10 paramètres dans une classe de données, je veux initialiser la classe de données avec un constructeur vide et définir les valeurs uniquement pour quelques paramètres à l'aide de setter et transmettre l'objet au serveur.
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<*, *>,
)
Usage:
Quelque chose comme ça sera facile
val activity = Activity();
activity.title = "New Computer"
sendToServer(activity)
Mais cela nécessite que tous les arguments soient passés lors de la création du constructeur. Comment puis-je simplifier comme ci-dessus?
val activity = Activity(null,null,null,null,null,"New Computer",null,null,null,null);
sendToServer(activity)
copy
vous avez besoin d'une instance de classe de données. Pour le créer, vous devez appeler un constructeur - et voici le problème.emptyList
pas de mémoire à plusieurs reprises. Il renvoie un singleton .Si vous donnez des valeurs par défaut à tous les champs - un constructeur vide est généré automatiquement par Kotlin.
et vous pouvez simplement appeler:
la source
class FeelComChatMessage (messageText: String = "", messageUser: String = "")
En plus de la réponse @miensol, permettez-moi d'ajouter quelques détails:
Si vous voulez un constructeur vide visible par Java utilisant des classes de données, vous devez le définir explicitement.
L'utilisation des valeurs par défaut + spécificateur de constructeur est assez simple:
Cela signifie qu'avec cette astuce, vous pouvez maintenant sérialiser / désérialiser cet objet avec les sérialiseurs Java standard (Jackson, Gson, etc.).
la source
Si vous donnez une valeur par défaut à chaque paramètre du constructeur principal:
et de la classe où les instances vous pouvez l'appeler sans arguments ou avec les arguments que vous avez à ce moment
la source
Je suggère de modifier le constructeur principal et d'ajouter une valeur par défaut à chaque paramètre:
Vous pouvez également rendre les valeurs nulles en ajoutant
?
, puis vous pouvez assingnull
:En général, il est recommandé d'éviter les objets Nullable - écrivez le code de la manière dont nous n'avons pas besoin de les utiliser. Les objets non nullables sont l'un des avantages de Kotlin par rapport à Java. Par conséquent, la première option ci-dessus est préférable .
Les deux options vous donneront le résultat souhaité:
la source
Constructeur secondaire non vide pour la classe de données dans Kotlin:
Constructeur secondaire vide pour la classe de données dans Kotlin:
la source
De la documentation
la source