您好,请再次帮助我。我在文档中有这样的内容:
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类中哪个最好使用int
或Integer
?
答案 0 :(得分:4)
包装器类是封装原始Java类型的对象。因此,即使您使用的是原始int
或对象版本(在本例中为Integer
类),也将映射到Cloud Firestore数据库中的完全相同的类型。参见此处Firestore supported data types。
哪种方法最好在POJO中使用int或Integer?
没有最佳选择,这完全取决于您来决定您对哪种选择更满意。我为模型类使用的是原始类型,因为如果使用的是对象版本,则在某些情况下有时值可能为null
。
答案 1 :(得分:1)
因此,int
是一个基元,Integer
是一个装箱的基元(也是装箱的类型)。
通常:
相对于框框类型,更喜欢使用原始语。
在以下情况下使用盒装类型:
- 使用参数化类型(列表集合)。参数化类型不允许使用原语。
- 在集合中将值用作键或值。
- 使用反射方法调用(另一个不要这样做)。例如class.forName(“ java.lang.Integer”);
来源:Joshua Bloch撰写的有效Java。
在您的情况下:
如果数据库中缺少总体,应将其初始化为0
(对于基元)还是null
(对于盒装类型)?我认为,0表示某些含义。这意味着有0个公民,没有人住在那儿。另外,您将必须执行检查population > 0
以查看该值是否存在。尽管有一般建议,但在这种情况下,我还是选择盒装Integer
类型。