2012-03-28 32 views
3

來源: http://developer.android.com/resources/tutorials/views/hello-gridview.html,在ImageAdapter類:看起來像Java的內部靜態類,但顯然它不是(我不明白,這怎麼可能?)

imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 

看那新的GridView .LayoutParams部分。看來LayoutParams是GridView類的內部靜態類,但根據android文檔,GridView類的完整路徑是android.widget.GridView,而LayoutParams是android.widget.AbsListView.LayoutParams。所以LayoutParams不是GridView的內部靜態類。

這怎麼可能?

參考文獻:
GridView class from android doc
LayoutParams class from android doc

回答

4

AbsListView IST基類的GridView

7

大概是這樣的:

class BaseOuter { 
    static class BaseInner { 
    } 
} 

class SubOuter extends BaseOuter { 
} 

public class Test { 
    public static void main(String[] args) { 
     SubOuter.BaseInner x = new SubOuter.BaseInner(); 
    } 
} 

我可能會建議使用 「規範」 的方式指的是嵌套類型(在我的例子中是BaseOuter.BaseInner),只是爲了清楚起見。

+0

雖然207給出了明確的答案,你給的解釋。非常感謝你們兩位。 – null 2012-03-28 12:31:38

1

正如@Jon Skeet所假設的那樣,LayoutParamsAbsListViewGridView的延伸AbsListView的內部靜態類,因此繼承了內部類。

你可以看一下在GitHub上的源代碼,清楚地看到:

相關問題