【问题标题】:Java - Which is best to use in firestore int or Integer?Java - 在firestore int或Integer中最好使用哪个?
【发布时间】:2018-11-06 14:43:34
【问题描述】:

您好,请再次帮助我。我在文档中有这样的:

cities
 \
  - id_number
        \
         - "population": 860000
        \
         - "name": San Francisco

我有 POJO 课程。

一个:

public class City {
    public String name;
    public int population;  ** int **

    public City() {}
}

两个:

public class City {
    public String name;
    public Integer population; ** Integer **

    public City() {}
}

在我的 POJO 类中使用 intInteger 哪个最好?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    包装类是封装原始 Java 类型的对象。因此,即使您使用原始 int 或对象版本(在本例中为 Integer 类),也将映射到 Cloud Firestore 数据库中完全相同的类型。见这里Firestore supported data types

    在 POJO 中使用 int 和 Integer 哪个最好?

    没有最佳选择,完全由您决定您更喜欢哪些选项。我将原始类型用于我的模型类,因为如果您使用对象版本,则在某些情况下值可能是 null

    【讨论】:

    【解决方案2】:

    所以,int 是一个基元,Integer 是一个装箱的基元(也是装箱的类型)。

    一般来说:

    优先使用原语而不是盒装类型。

    在以下情况下使用盒装类型:

    1. 使用参数化类型(列表集合)。参数化类型不允许使用原语。
    2. 将值用作集合中的键或值。
    3. 使用反射方法调用(另一个不要这样做)。例如class.forName("java.lang.Integer");

    来源:Joshua Bloch 的《Effective Java》。

    在你的情况下:

    如果数据库中缺少人口,应该将其初始化为0(在原语的情况下)还是null(在盒装类型的情况下)?在我看来,0 意味着什么。这意味着有0个公民,没有人住在那里。此外,您必须检查 population > 0 以查看该值是否存在。尽管有一般建议,但在这种情况下,我会选择 boxed Integer 类型。

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 2013-07-05
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 2023-03-27
      • 2012-05-24
      • 1970-01-01
      相关资源
      最近更新 更多