如何在Java中比较两个实例?

如何在Java中比较两个实例?,java,Java,我想比较两个瞬间s,看看两者是否相等或大于,但我做不到。 我不知道。如何比较瞬间 private Instant expiration; if(expiration()==Instant.now()||expiration()>Instant.now()) { valid+="the Expire date is invalid check it . "; } 我试着这样做,但我有编译错误。 但我认为我不能用这种方式进行比较 它必须将inst

我想比较两个
瞬间
s,看看两者是否相等或大于
,但我做不到。 我不知道。如何比较瞬间

  private Instant expiration;

 if(expiration()==Instant.now()||expiration()>Instant.now())
  {
     valid+="the Expire date is invalid check it . ";
  }
我试着这样做,但我有编译错误。 但我认为我不能用这种方式进行比较 它必须将instant更改为String并在其后进行比较
但是我不知道如何格式化为字符串

不要将它们转换为字符串。与其他所有
Comparable
类型一样,Instant具有
compareTo
方法。像这样使用它:

if (expiration.compareTo(Instant.now()) >= 0) {
  ...
}

您可能有编译错误,因为您在
过期
之后添加了括号,但在您的示例中,过期是一个变量,而不是一个方法。因此,如果您删除这些,您至少应该能够消除编译错误。
Instant
还有更多语义上有意义的方法:
if(now().isAfter(expiration))
@chrylis-cautiouslyoptimistic-:
isAfter
不代表
=
,它代表
。您可以解决这个问题,例如使用
!isBefore
| |等于
,但在某种程度上,只使用
compareTo
更简单。我总是发现调用
compareTo()
读起来很神秘。我的品味当然是@chrylis谨慎的光学-即使涉及
!isBefore
(只是稍微有点难,但比
更简短)或
| |等于
(更长但非常清晰)。我承认,这是品味的问题。还有,谁在乎最后一纳秒?对
now()
的调用无论如何都要花费超过一纳秒的时间,那么在这种特殊情况下区分
=
又有什么意义呢?