2016-12-19 48 views
0

我正在處理一個API,當我要求一個屬性時返回Object在Java中將Object轉換成Long的更好方法是什麼?

Object x = r.getProperty("id"); 

但我知道這個事實,特別是這個屬性是Long。所以這些是我正在稱重的兩個選項:

Long x = Long.parseLong(r.getProperty("id").toString()); 

Long x = (Long)r.getProperty("id"); 

哪一個是首選的性能?

+0

基於直覺本能 - 可能是第二個。減少分配空間和構建的對象。 – Mshnik

+2

爲什麼它轉換爲字符串,然後將其轉換回長有更好的表現不僅僅是它鑄造長 – Natecat

+0

我雖然一樣,但我一直聽說,強制轉換有 –

回答

3

如果你知道一個事實,這是一個Long,我肯定會跟投去。它更清晰,可能更有效。如果您確定退貨類型爲Number,則可致電Number.longValue()。如果這還不確定,那麼我可以使用解析選項來保證安全,並避免使用instanceof樣板。

+0

同意,而且我假設演員會更快一點,雖然這個操作的速度可能對性能沒有任何實際影響,除非你的程序根本沒有IO。 –

+0

是的,這個問題更多的是好奇心,這個問題肯定是程序中最慢的部分。 –

1

第二種方法更快,但它不是很寬容:除非值實際上是Long,否則代碼將崩潰。

第一種方法,在另一方面,將生存型的變化:如果以後決定使用IntegerStringByte,或打印兼容的數值與long一些其他類型的具有自定義toString,則代碼正在工作。因此,第一種方法更加健壯。

相關問題