繁体   English   中英

Long.valueOf无法编译,无法将int转换为long

[英]Long.valueOf not compiling for converting int to long

看这个问题的答案(链接: 如何在Java中从int转换为Long? ),我使用以下方法将long值(newUpdate,lastUpdate)与int值(间隔)进行比较。

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类型的。

如果interval是一个int ,则只需...

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

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

表达式Long.valueOf(Interval)返回一个java.lang.Long而不是long 如果您需要interval明确转换为long ,则应将其强制转换为:

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

唯一令我困惑的例子是,为什么在比较longLong时会出现编译错误。 Long 应该自动拆箱,并且应该使用>运算符的longlong版本:参考JLS-15.20.1 ,它表示如果需要,数字关系运算符可以执行拆箱。 唯一的解释可能是您使用1.4或更早版本的源代码进行编译。

Long.valueOf(Interval)包装对象retuns Long因此>操作者是不适用的。

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

如果Intervalint类型,则只需在比较中使用Interval 它将自动升级为long 规格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM