2013-02-24 92 views
5

只是一個簡單的問題:在android文檔中看到的所有示例中,片段都是靜態內部類。這是Android的要求嗎?或者他們可以成爲普通班級嗎?有沒有人理解Android的內部結構足以提供答案?片段作爲靜態類

從我在OCJP文檔中讀到的內容來看,這些靜態內部類根本就不是類,而只是包含它們的類的靜態成員,就像任何靜態方法一樣 - 比如主要。

您的見解值得讚賞。

回答

9

這是Android的一項要求嗎?或者他們可以成爲普通班級嗎?

它們不能是常規(非靜態)內部類。只有外部類的實例才能創建常規內部類的實例,並且Android需要爲您重新創建片段(例如,在更改配置時)。碎片必須是普通的Java類或靜態的內部類,並且它們需要有一個公共的零參數構造函數。

這些靜態內部類根本就不是類,而只是包含它們的類的靜態成員,就像任何靜態方法(如main)一樣。

我不知道你是如何得出這種解釋的。

+0

這是從Sun Certified Programmer for Java 6學習指南(第681頁)中學習的:「這個類本身並不是靜態的,不存在靜態類,靜態修飾符在這種情況下表示嵌套class是外部類的靜態成員,這意味着它可以像其他靜態成員一樣被訪問,而不需要外部類的實例。這是一個主要方法,因爲它是靜態的。但你的評論有幫助。謝謝。 – user1837057 2013-02-24 13:26:07

+3

@ user1837057:我不同意該學習指南的解釋。恕我直言,靜態內部類幾乎只是命名空間的語法糖 - 在大多數其他方面,它們與普通的Java類沒有區別。 – CommonsWare 2013-02-24 13:29:56