如何为具有日期和时间字段的 Kotlin 数据类创建无参构造函数

问题描述 投票:0回答:1

我有以下数据类:

data class TimesheetEntry(
    val id: Int = 0,
    val title: String = "",
    val category: String = "",
    var entryDate: LocalDate,
    var startTime: LocalTime,
    var endTime: LocalTime,
    val imageBitmap: Bitmap? = null
)

我正在尝试从 Firestore 获取 timeSheetEntry 数据,但是每当我打开 Activity 查看条目时,应用程序都会崩溃。 当我检查 logcat 时,它显示以下错误:

 java.lang.RuntimeException: Could not deserialize object. Class java.time.LocalDate does not define a no-argument constructor. If you are using ProGuard, make sure these constructors are not stripped (found in field 'entryDate')

我尝试为其分配系统日期,但这不起作用,我还尝试了硬编码日期和时间,但没有什么区别。

firebase kotlin android-studio google-cloud-firestore
1个回答
0
投票

Kotlin 中的数据类必须至少有一个构造函数参数。这是必要的,因为数据类会从构造函数参数自动生成

equals
hashCode
方法。所以必须至少有一个。

您始终可以为参数提供默认值:这样您就可以创建一个对象,而无需提供任何参数,看起来就像使用了无参数构造函数。

您还可以将数据类设为常规类,这样就没有更多关于无参数构造函数的限制了。

对于有关如何从 Firestore 检索数据的另一个问题,我建议您提出一个更详细的新问题。

© www.soinside.com 2019 - 2024. All rights reserved.