自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Integer.getInteger你不是在玩我吧?

開發(fā) 后端
我們將談到的是Java 5中Integer.getInteger的一個(gè)模糊的定義,這個(gè)玩笑甚至?xí)l(fā)無窮的BUG隱患,大家一起來看看吧。

我剛剛發(fā)現(xiàn)在 Java 5 里聲明的一個(gè)方法:Integer.getInteger(String):

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#getInteger(java.lang.String)

根據(jù)指定的名稱得到系統(tǒng)屬性的整數(shù)值。

***個(gè)參數(shù)將被認(rèn)為是系統(tǒng)屬性的名稱。系統(tǒng)屬性可以通過 System.getProperty(java.lang.String)方法訪問得到。屬性值字符串將被解釋成一個(gè)整數(shù),并且以表示這個(gè)值的Integer對(duì)象形式返回??赡艹霈F(xiàn)的數(shù)字格式的詳細(xì)說明可以在 getProperty 的定義說明里找到。

那么就讓我來看看是否理解了:

Integer.valueOf(String) 通過假設(shè) String 表達(dá)的是一個(gè)數(shù)值而把 String 轉(zhuǎn)化成數(shù)字。也就是說, Integer.valueOf("12345") 得到數(shù)字 12345。

Integer.getInteger(String) 通過假設(shè) String 是一個(gè)系統(tǒng)屬性數(shù)值的名稱而把 String 轉(zhuǎn)換成一個(gè)數(shù)字。也就是說, Integer.getInteger("12345") 應(yīng)該是得到 null。

有誰會(huì)認(rèn)為這兩者之間有足夠清晰的區(qū)別?有多少bug是因?yàn)楸緛硐胧褂胿alueOf但卻使用了getInteger而導(dǎo)致的?

這種形式的方法重載就是所謂的諧音重載(near-phrase overloading)。這是我剛發(fā)明的術(shù)語。它說的是人們使用非常相似的術(shù)語表達(dá)完全不同的東西。看一下 x 和 y 這兩個(gè)詞,一種情況下它們用做 gm(x) 和 gm(y),(譯者注:gm是重量單位’克‘),而另一種上下文中它們用做 cm(x) 和 cm(y)(譯者注:cm是長(zhǎng)度單位’厘米‘)。如果你這樣使用

 

  1. distance(gm(x), gm(y))< distance(cm(x), cm(y)) 

 

那么這就是一種錯(cuò)誤的對(duì) x 的 y 用法!你應(yīng)該在這個(gè)上下文中使用 x 和 y 之外的變量名。事實(shí)上,那個(gè)方法應(yīng)該被叫做 getIntegerProperty。

這是我在Java中看到的絕對(duì)會(huì)產(chǎn)生歧義一個(gè)最糟糕的案例。他們應(yīng)該把事情做得漂亮些。

Update:結(jié)果我又發(fā)現(xiàn)了更糟糕的一個(gè): Boolean.getBoolean("true") 得出的結(jié)果會(huì)等于 Boolean.FALSE。

【編輯推薦】

  1. Java EE進(jìn)階之Spring事務(wù)深入淺出
  2. 深度探討Java字節(jié)代碼的操縱方法
  3. PHP與Java在Web開發(fā)方面的比較
  4. 2010年,Java懷念它 2011年,Java期待它
  5. Java EE 7將于2012年發(fā)布 基于云操作平臺(tái)
責(zé)任編輯:彭凡 來源: 開源中國(guó)社區(qū)
相關(guān)推薦

2009-04-21 10:19:24

Oracle智慧的地球IBM

2011-08-31 14:41:37

憤怒的小鳥小游戲android游戲

2020-09-14 06:52:42

Java對(duì)象代碼

2016-12-28 14:51:46

大數(shù)據(jù)應(yīng)用

2015-09-18 10:01:11

2014-08-04 10:48:35

職場(chǎng)IT職場(chǎng)

2011-11-23 13:05:01

2021-12-29 11:56:16

Linux俄羅斯方塊

2011-08-25 09:11:13

2015-10-26 14:30:36

數(shù)據(jù)分析炒菜搬運(yùn)工

2023-11-02 08:25:25

組件ReactUI

2022-03-15 09:58:12

單例模式系統(tǒng)

2010-08-20 09:52:36

丁磊管理

2018-12-12 10:04:33

CIO信息化數(shù)字化

2021-03-26 11:50:28

Linuxexals

2019-03-31 08:50:44

LinuxWine游戲

2013-11-08 10:21:13

2016-04-28 09:36:44

人才教育/華三

2012-05-11 09:13:28

程序員開發(fā)者

2022-07-24 14:51:31

開源游戲RPG 游戲
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)