2012-01-23 58 views
4

這可能是有點毫無意義的問題,但同時瀏覽不同的JDK類的來源,我看到,當一個類實現的java.io.Serializable接口,它通常是指其與一個完全合格的名稱,而不是使用導入,如:爲什麼在JDK類中使用完全限定名稱聲明瞭Serializable?

public class ArrayList<E> extends AbstractList<E> 
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable 

對此有任何具體的原因是什麼?這與舊版JDK 1.0中已棄用類sunw.io.Serializable的存在有任何關係嗎?

+1

我相信你是正確的用'sunw.io.Serializable',作者想要說清楚,他們的意思是'java.io.Serializable'。比如'Cloneable'在JDK中沒有一個同名的對象,所以它沒有意義。 –

+3

問問該代碼的作者。使用Serializable的完全限定名(根據我的經驗)不是正常的事情。 –

+2

@Steve Kuo:你說我應該給Josh Bloch寫一封電子郵件? :) – Natix

回答

-2

它通常被認爲表現欠佳,只是導入所有慎之又慎。使用完全限定的類型名稱(包括java.io.Serializable和例外)可以減少對導入的需求並檢查這些類型的來源。

+4

你可以給任何人提供任何參數或例子不要導入任何東西,特別是衆所周知的JDK類嗎?只有在我認爲有意義的情況下才會使用像java.sql.Date這樣的類,其中人們希望明確避免與標準的'java.util.Date'混淆。 (我沒有提到靜態進口,如果誤用,它們實際上可能會造成一些混淆。) – Natix

相關問題