關(guān)于java 5中的static import的一點(diǎn)討論
Posted on 2005-09-11 20:15 Justfly Shi 閱讀(1126) 評(píng)論(0) 編輯 收藏 所屬分類: Study Tiger在java5中添加的一個(gè)新特性就是static import(靜態(tài)導(dǎo)入?)通過靜態(tài)導(dǎo)入我們可以很方便的使用在其他類中定義的函數(shù)。如下面的代碼所示,我們可以直接的使用java.lang.Math 的min和max以及其他在java.lang.Math中所定義的靜態(tài)方法,只需要在import中添加一句import static java.lang.Math.*。這是一個(gè)很方便的功能。




























但是這個(gè)功能卻不能濫用。因?yàn)樗鼤?huì)導(dǎo)致代碼的可讀性變得很差。考慮一下一個(gè)未曾接觸過java.lang.Math類的讀者來看這段代碼。當(dāng)他讀到“int min=min(3,4)”,他會(huì)很迷惑,這個(gè)min函數(shù)到底是在哪里定義的呢?于是他就得去分析import這里。這段代碼還好說,只有一個(gè)類被靜態(tài)導(dǎo)入,只需要打開 java.lang.Math的文檔就可以直接了解這些方法的相關(guān)信息了。但是如果同時(shí)靜態(tài)導(dǎo)入了10個(gè)類的情況下呢?如果這些類中有著名字類似(相同)但是行為卻不一致的方法的時(shí)候呢?比如Person.eat(Food food)和 Animal.eat(Food food)。
那么這個(gè)功能該如何用呢?我認(rèn)為一些常用的工具類、全局變量類等當(dāng)需要在一個(gè)類中多次使用的時(shí)候可以導(dǎo)進(jìn)來,但是對(duì)于系統(tǒng)中的模型類或者是用的次數(shù)不多的工具類還是不要導(dǎo)入的好。我們需要在自己寫代碼時(shí)的方便和代碼本身的可讀性間做個(gè)權(quán)衡。