[英]Why Long (Wrapper) is not unboxed into primitive long while casting to byte?
[英]Casting double (primitive) to Long ( Wrapper )
我必须在代码中的多个位置将原始双精度类型转换为Long(Wrapper)。 这是我可以使用的2种方法-
linkcatch.setCode(Long.valueOf((long) relatedCd.getDouble(value)));
(将原始double转换为long,然后包装长)
linkcatch.setCode(Long.valueOf(String.valueOf(relatedCd.getDouble(value))));
(将Double转换为String到Wrapper Long)
有没有任何方法可以将本机double长时间转换为Wrapper,而无需进行中间转换。
我很担心,因为在很多地方我都需要这样做。 谢谢。
您可以创建一个以双精度值作为参数的静态方法,而不是在每个java语句中进行强制转换,然后进行强制转换并返回Long对象。 这样,易于维护,代码的可重复使用性而无需冗余
只是强制转换和Java自动装箱会为您转换为Long对象类型。 无需制作特殊的库或其他方法(保持精简!)
linkcatch.setCode((long)relatedCd.getDouble(value));
笔记:
找到了一种更短的方法。 您可以使用Math.Round来获取长本机值。 之后,您只需将其转换为长
double a = -5.42
Long = (Long)Math.round(a);
但是,另一种方法也可以做一些事情,例如开设另一个班级来为您完成工作。
public class Util{
public static Long getLong(double a){
return (Long)Math.round(a);
}
}
这样,您的代码将如下所示
linkcatch.setCode(Util.getLong(value));
代替
linkcatch.setCode(Long.valueOf((long) relatedCd.getDouble(value)));
要么
linkcatch.setCode(Long.valueOf(String.valueOf(relatedCd.getDouble(value))));
希望它可以帮助您使代码更整洁,更易于管理。 另外,如果希望所有“长整数”值都向上或向下取整,则可以在单个位置(Util类)进行编辑,而不是100个不同的值。
您可以这样:
Long l = new Double(relatedCd.getDouble(value)).longValue();
Java自动装箱将帮助您执行其他操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.