![](/img/trans.png)
[英]NumberFormatException: empty String ; Double.parseDouble
[英]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.