java - 在 Java 中,我应该如何将一个对象与一个 const 值进行比较?

标签 java null compare equality

我已经创建了自己的 MyDate 类。它基本上用一些漂亮的 toString() 函数包装了一个 Long 值。我已经实现了 equals()compareTo()。我的程序读取一些数据并实例化包含此 MyDate 类的类的对象。问题是有时数据不好,所以我创建了一个 public static final long NODATE = Long.MIN_VALUE; 这样我就可以启动一个空的新实例(替换包含类中的 null 以便避免 NullPointerExceptions)。我还实现了一个不带参数的构造函数,它将 Long 值初始化为 NODATE

我的问题: 我想检查 MyDate 的值是否为 NODATE。我无法与 NODATE 进行比较,因为它是 Long 而不是 MyDate。一种方法是:

如果 someObject.myDate.equals(new MyDate())

但是仅仅为了比较而创建一个对象似乎是一种浪费?另一种方法是实现 MyDate.amINoDate() 方法。

还有别的办法吗?我正在考虑创建一个 MyDate 的静态实例,该实例被初始化为 NODATE 并与之进行比较。但是我怎样才能将我的非静态对象与这个静态对象进行比较呢?

最佳答案

class MyDate {
  public static final MyDate NODATE = new MyDate(Long.MIN_VALUE);
  // ...
}

// ...
if (someDate.equals(MyDate.NODATE)) // ...

谢谢 maskacovnik。

关于java - 在 Java 中,我应该如何将一个对象与一个 const 值进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718440/

相关文章:

java - 给 int 赋值时括号中的 'int' 是什么意思?

java - 基于图 block 的 map 滚动

c# - 如何从 LINQ 将 Sql DateTime 设置为 null

java - 为什么某些变量必须用一个值(例如 0、null)初始化?

c++ - 在 C++ 中比较字符与字符串内的字符

java - 附加带有标题的 java 文件

java - 构造函数 SimpleAdapter 未定义

具有 0x00 字符的 C++ 数据数组

mysql - 如何使sql语句显示在两个日期之间?

ruby - 检查一个元素是否包含在 RUBY 的数组中