如何在Java中呈现可为空的基元类型int?

2022-09-01 08:06:52

我正在设计一个实体类,它有一个名为“documentYear”的字段,它可能具有无符号整数值,例如1999,2006等。同时,此字段也可能是“未知”的,即不确定文档是在哪一年创建的。

因此,C# 中的可为 null 的 int 类型将非常合适。但是,Java 没有像 C# 那样的可空功能。

我有两个选择,但我不喜欢它们:

  1. 使用代替基元类型java.lang.Integerint;
  2. 使用 -1 表示“未知”值

有没有人有更好的选择或想法?

更新:我的实体类将有数以万计的实例;因此,java.lang.Integer 的开销对于系统的整体性能来说可能太重了。


答案 1

在此处使用 Integer 类可能是您要执行的操作。与对象关联的开销对于应用程序的整体响应能力和性能来说很可能(尽管不一定)微不足道。


答案 2

您将不得不放弃基元类型或使用任意int值作为“无效年份”。

负值实际上是一个不错的选择,因为几乎没有机会有一个有效的年份会导致整数溢出,并且没有有效的负年份。


推荐