Kotlin POJO字段声明,设置为初始值或null

Kotlin POJO字段声明,设置为初始值或null,kotlin,deserialization,moshi,android,gson,Kotlin,Deserialization,Moshi,Android,Gson,在我的POJO中,我通常这样声明字段 class SampleModel { var field1: String? = null var field2: Int? = null <more fields here> } 类样本模型{ 变量字段1:字符串?=null 变量字段2:Int?=null } 如果我这样声明,我需要检查字段是否为null 但如果是这样的话: class SampleModel { var field1 = "" v

在我的POJO中,我通常这样声明字段

class SampleModel {
    var field1: String? = null
    var field2: Int? = null
    <more fields here>
}
类样本模型{
变量字段1:字符串?=null
变量字段2:Int?=null
}
如果我这样声明,我需要检查字段是否为null

但如果是这样的话:

class SampleModel {
    var field1 = ""
    var field2 = 0
    <more fields here>
}
类样本模型{
var field1=“”
变量字段2=0
}
我可以直接使用它

使用哪种声明重要吗? 比如在记忆力、表现或者任何一个好的练习方面

假设我有100个字段。
然后,我使用Moshi或Gson作为反序列化器。

最后,除了性能考虑之外,还有代码质量。如果这些字段在您的用例中永远不会为null,那么我就不会使用可为null的类型。你在强迫自己做额外的工作(尽管Kotlin让它变得更容易),以适应一个你似乎在说不可能的场景


另一方面,;如果在这种情况下序列化类中缺少一个字段,您可能无法立即捕获它,因为该类中的字段具有默认值。如果您对所提供的数据有信心,尽管这不应该是一个问题。

最后,除了性能考虑之外,代码质量也是一个问题。如果这些字段在您的用例中永远不会为null,那么我就不会使用可为null的类型。你在强迫自己做额外的工作(尽管Kotlin让它变得更容易),以适应一个你似乎在说不可能的场景


另一方面,;如果在这种情况下序列化类中缺少一个字段,您可能无法立即捕获它,因为该类中的字段具有默认值。如果您对所提供的数据有信心,尽管这不应该是一个问题。

IMO,在选择这两种方法时,不应考虑内存和性能。这取决于您希望类如何表现。具有默认值(方法2)或空值(方法1)。当您需要处理此类的逻辑时,这很重要。

在这两种方法之间进行选择时,不应考虑内存和性能。这取决于您希望类如何表现。具有默认值(方法2)或空值(方法1)。当你需要处理这个类的逻辑时,这很重要。< / P>我的问题的哪一部分说不可能的事情?如果可能的话,我根本看不出有什么理由去考虑第二个选项。如果NULL是可能的,那么您必须具有可空类型,并且通过将缺省值置于可空类型上是没有好处的。我的问题的哪一部分说不可能?如果可能的话,我根本看不出有什么理由去考虑第二个选项。如果null是可能的,那么您就必须拥有可为null的类型,而将默认值放在可为null的类型上并没有任何好处。对于perf,像空字符串这样的值会被保留,并且不会花费任何费用。对于代码,这取决于您试图做什么,以及您是否真的想要默认值。您可以使用构造函数创建数据类,这些构造函数采用不可为null的类型,并使用Moshi的KotlinJsonAdapter来要求这些JSON字段。对于perf,空字符串之类的值被保留,并且不需要任何费用。对于代码,这取决于您试图做什么,以及您是否真的想要默认值。您可以使用构造函数创建数据类,这些构造函数采用不可为null的类型,并使用Moshi的KotlinJsonAdapter来要求这些JSON字段。