-1

查看这个问题的答案(链接:How do I convert from int to Long in Java?),我使用以下内容将 long 值(newUpdate、lastUpdate)与 int 值(Interval)进行比较

if ((newUpdate - lastUpdate) > Long.valueOf(interval))

我无法编译。比较两种不同类型的正确方法是什么?

更多信息:

[INFO] Trace org.apache.maven.BuildFailureException: Compilation failure [145,51] operator > cannot be applied to long,java.lang.Long

间隔是类型int

4

2 回答 2

3

如果interval是一个int,那么就...

    if ((newUpdate - lastUpdate) > interval) { ...

在这种情况下,没有充分的理由显式转换interval为 a long。无论如何,转换将为您完成。

该表达式Long.valueOf(Interval)返回 ajava.lang.Long而不是 a long。如果您需要明确地interval变成 a long,那么您应该将其转换为:

    if ((newUpdate - lastUpdate) > ((long) interval)) {

关于您的示例,唯一让我感到困惑的是,为什么在比较 along和 a时会出现编译错误LongLong 应该自动取消装箱,并且应该使用long,long版本的>运算符:参考JLS - 15.20.1,它说数字关系运算符在需要时执行取消装箱。唯一的解释可能是您使用 1.4 或更早版本的源代码级别进行编译。

于 2012-12-03T14:20:54.910 回答
0

Long.valueOf(Interval)重新调整包装对象,Long因此>运算符不适用。

如果Interval是 String 类型,则Long.valueOf(Interval).longValue()在您的比较中使用。

如果Intervalint类型,那么只需Interval在您的比较中使用。它将自动提升为long--> specs

于 2012-12-03T14:18:54.550 回答