繁体   English   中英

这是更有效的Object类转换或Double.parseDouble(String)

[英]Which is more efficient Object class casting or Double.parseDouble(String)

与此类似的代码块引发了关于哪部分代码最有效或是否有更正确的方法的争论。 一种说法是,强制转换比创建要解析的字符串更有效。 一种说法是,多个类强制转换比创建要解析的字符串创建的对象更多。

什么是“最佳实践”?

Object some_num_obj;
double some_num;
if(some_num_obj instanceof Integer)
{
    some_num = (double) (int) (Integer) some_num_obj;
}
else if(some_num_obj instanceof Double)
{
    some_num = (Double) some_num_obj;
}
else
{
     some_num = Double.parseDouble(some_num_obj.toString());
}

最有效,可能最快的方法是使用Number.doubleValue和Double.parseDouble

if(some_num_obj instanceof Number)
    some_num = ((Number) some_num_obj).doubleValue();
else
    some_name = Double.parseDouble(some_num_obj.toString());

最佳实践是最易读的一种。 除非该代码段连续运行数万次,否则效率差异将与不存在一样。

不太确定它是否适用于您的应用程序,您可能想看一下java.lang.Number类作为方法参数。

一种说法是,多个类强制转换正在创建更多对象

错误。 类强制转换不会创建任何对象。

类型只不过是一种告诉编译器如何处理变量的方法,它们不会创建新的对象。 从数字创建字符串并将字符串解析回数字都非常昂贵。 强制转换的唯一潜在麻烦是类型安全,您可以使用instanceof来解决。

附带说明一下,在第一部分中增加一倍的额外演员是多余的。

暂无
暂无

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

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