我必须在我的代码中的多个位置将原始double转换为Long(Wrapper)。这是我可以使用的两种方式 -
linkcatch.setCode(Long.valueOf((long) relatedCd.getDouble(value)));
(将原始double转换为原始long,然后将Wrapper Long转换为
)linkcatch.setCode(Long.valueOf(String.valueOf(relatedCd.getDouble(value))));
(将double转换为String to Wrapper Long)
有没有办法从原生双精度转换为Wrapper而不进行中间强制转换。
我很担心,因为我需要做很多地方。感谢。
答案 0 :(得分:1)
不是在每个java语句中进行转换,而是可以创建静态方法,该方法将double值作为参数,执行转换并返回Long对象。通过这种方式,它易于维护并且代码的可重用性没有冗余
答案 1 :(得分:1)
Just cast和java autoboxing将为您转换为Long对象类型。无需制作特殊的库或额外的方法(保持精益!)
linkcatch.setCode((long)relatedCd.getDouble(value));
注意:
答案 2 :(得分:1)
找到一种更短的方法来制作它。您可以使用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))));
希望它可以帮助您使代码更清晰,更易于管理。此外,如果您希望所有Long值都向上或向下舍入,您只需编辑一个位置(The Util类),而不是100个不同。
答案 3 :(得分:0)
你可以这样做:
Long l = new Double(relatedCd.getDouble(value)).longValue();
Java autoboxing将帮助您做其他事情。