[英]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)) {
唯一令我困惑的例子是,为什么在比较long
和Long
时会出现编译错误。 Long
应该自动拆箱,并且应该使用>
运算符的long
, long
版本:参考JLS-15.20.1 ,它表示如果需要,数字关系运算符可以执行拆箱。 唯一的解释可能是您使用1.4或更早版本的源代码进行编译。
Long.valueOf(Interval)
包装对象retuns Long
因此>
操作者是不适用的。
如果Interval
是String类型,则在比较中使用Long.valueOf(Interval).longValue()
。
如果Interval
是int
类型,则只需在比较中使用Interval
。 它将自动升级为long
规格 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.