Java Long.valueOf不编译以将int转换为Long

Java Long.valueOf不编译以将int转换为Long,java,int,long-integer,Java,Int,Long Integer,查看此问题链接的答案:,我使用以下内容比较长值newUpdate、lastUpdate和int值Interval 如果newUpdate-lastUpdate>Long.valueOfinterval 我不会编译。比较两种不同类型的正确方法是什么 更多信息: [INFO]Trace org.apache.maven.BuildFailureException:编译失败[145,51]运算符>不能应用于long,java.lang.long 间隔的类型为int.Long.valueOfInterv

查看此问题链接的答案:,我使用以下内容比较长值newUpdate、lastUpdate和int值Interval

如果newUpdate-lastUpdate>Long.valueOfinterval

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

更多信息:


[INFO]Trace org.apache.maven.BuildFailureException:编译失败[145,51]运算符>不能应用于long,java.lang.long


间隔的类型为int.

Long.valueOfInterval retuns包装器对象Long,因此>运算符不适用

如果间隔是字符串类型,则在比较中使用Long.valueOfInterval.longValue

如果Interval是int类型,那么只需在比较中使用Interval。它将自动升级为long->。

如果interval是int,则只需

    if ((newUpdate - lastUpdate) > interval) { ...
在此上下文中,没有充分的理由显式地将interval转换为long。无论如何,转换都将为您完成

表达式Long.valueOfInterval返回java.lang.Long而不是Long。如果需要显式地将interval转换为long,则应强制转换它:

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

关于您的示例,唯一让我感到困惑的是,为什么在比较long和long时会出现编译错误。Long应该是自动取消绑定的,并且应该使用>操作符的Long、Long版本:reference,它表示如果需要,数字关系操作符将执行取消绑定。唯一的解释可能是您是在源代码级别为1.4或更低版本的情况下编译的。

编译错误是什么?Interval的类型是int还是Integer?[INFO]Trace org.apache.maven.BuildFailureException:编译失败[145,51]运算符>不能应用于long,java.lang.LongInterval的类型是int。请不要以大写字母开头变量名。请在中查找其他信息。非常感谢,您将帮助所有人阅读您的代码,避免心肌梗死或产生自杀倾向;我把间隔改成了间隔。为什么?所以没有理由将int转换为long?@RedDopamine int将自动转换为long。只使用interval就可以了。Yogendra的答案也很好用。很难记住何时会有死线。我使用了Long.valueOfInterval.longValue,现在效果很好。我也将只尝试Interval。@RedDopamine-编程并不是要尝试不同的修复,直到找到可以工作的东西。您需要了解Java语言,以便知道最初的错误是什么,并可以选择正确的修复方法。