Java-最好在firestore int或Integer中使用哪个?

时间:2018-11-06 14:43:34

标签: java android firebase google-cloud-firestore

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

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

2 个答案:

答案 0 :(得分:4)

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

  

哪种方法最好在POJO中使用int或Integer?

没有最佳选择,这完全取决于您来决定您对哪种选择更满意。我为模型类使用的是原始类型,因为如果使用的是对象版本,则在某些情况下有时值可能为null

答案 1 :(得分:1)

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

通常:

  

相对于框框类型,更喜欢使用原始语

     

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

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

来源:Joshua Bloch撰写的有效Java。

在您的情况下:

如果数据库中缺少总体,应将其初始化为0(对于基元)还是null(对于盒装类型)?我认为,0表示某些含义。这意味着有0个公民,没有人住在那儿。另外,您将必须执行检查population > 0以查看该值是否存在。尽管有一般建议,但在这种情况下,我还是选择盒装Integer类型。