C'è un modo per utilizzare Parceler con le classi di dati Kotlin e il costruttore per la serializzazione senza utilizzare l'annotazione @ParcelProperty
per ogni campo?Utilizzo di Parceler con classe dati Kotlin con costruttore per la serializzazione
Se provo e usare biblioteca come questo:
@Parcel
data class Valve @ParcelConstructor constructor(val size: Int)
ottengo Error:Parceler: No corresponding property found for constructor parameter arg0
. Ma se aggiungo @ParcelProperty("size")
funziona perfettamente.
Perché è quello?
Aggiornamento:
ci sono altri un altro modo di usare questa libreria.
ho potuto solo rimuovere @ParcelConstructor
annotazione, ma poi mi metterò errore
Error:Parceler: No @ParcelConstructor annotated constructor and no default empty bean constructor found.
credo (non ho ancora testato esso) Ho anche potuto fare tutti i parametri del costruttore facoltativa e aggiungere @JvmOverloads
ma che ha un effetto collaterale che devo controlla tutte le proprietà della classe se sono nulle o meno.
Update 2:
Questo è ciò che ha funzionato per me:
@Parcel
data class Valve(val size: Int? = null)
Insomma classe Java generato deve avere di default costruttore vuoto. Un modo per ottenere ciò è fare come sopra: tutte le variabili dovrebbero avere valori predefiniti.
Ciò non funzionerebbe poiché richiede il costruttore di bean vuoto predefinito. Aggiornerò la mia domanda –
per avere un costruttore vuoto è possibile fornire un valore predefinito a 'size'. Aggiornato – voddan
o annotare il costruttore principale con '@ ParcelConstructor' proprio come nell'esempio – voddan