@ParcelProperty
アノテーションを各フィールドに使用せずに、シリアル化のためにKotlinデータクラスとコンストラクタを使用する方法がありますか?Parcelerシリアル化用のコンストラクタを持つKotlinデータクラスを使用するパーセルの使用
私がしようとすると、次のようにライブラリを使用する場合:
@Parcel
data class Valve @ParcelConstructor constructor(val size: Int)
私はError:Parceler: No corresponding property found for constructor parameter arg0
を取得します。しかし、私が@ParcelProperty("size")
を追加してもうまく動作します。
なぜですか?
更新:
このライブラリを使用する他の方法があります。
私は(それをテストしていない)私はまた、すべてのコンストラクタのパラメータをオプションにして@JvmOverloads
を追加することができると思うが、それは私が持っている副作用があり、私はちょうど@ParcelConstructor
注釈を削除することができ、その後私は、エラー
Error:Parceler: No @ParcelConstructor annotated constructor and no default empty bean constructor found.
を取得しますクラスのすべてのプロパティがnullかどうかをチェックします。
アップデート2:
これが私の仕事です:短い生成されたJavaクラスで
@Parcel
data class Valve(val size: Int? = null)
は、デフォルトの空のコンストラクタを持っている必要があります。これを実現する1つの方法は、上記のように行うことです。すべての変数にデフォルト値が設定されている必要があります。
これはデフォルトの空のBeanコンストラクタが必要なので動作しません。私は私の質問を更新します。 –
が空のコンストラクタを持つためには、デフォルト値を 'size'に与えることができます。 – voddan
を更新するか、空のコンストラクタを持つために、@ @ JvmOverloads'が必要ではないので、あなたの例のように '@ ParcelConstructor'をプライマリコンストラクタに追加してください。 – voddan