2015-03-25 48 views
1

我開發我自己的小LinkedList的執行,而無需使用節點嵌套類靜態和它工作正常.... 但Java使用節點嵌套類爲static.I沒有找到一個強有力的理由,使節點嵌套類作爲靜態的。爲什麼Java中的LinkedList實現將Node嵌套類視爲靜態?

任何人都可以幫我解釋一下嗎?

+1

如果在LinkedList類中有一個名爲size的成員變量。 Node類不需要訪問它。所以它的靜態。 – WannaBeCoder 2015-03-25 05:19:57

+0

嵌套類是內部或靜態的。不是在同一時間。 – EJP 2015-03-25 06:34:23

+0

[Java中的靜態嵌套類,爲什麼?]的可能重複(http://stackoverflow.com/questions/253492/static-nested-class-in-java-why) – EJP 2015-04-11 17:04:33

回答

1

嵌套類是其包圍class.Non靜態嵌套類(內部類)可以訪問封閉類的其他成員的成員,即使它們被聲明private.Static嵌套類不可以訪問封閉類的其他成員。

靜態嵌套類與它的外部類的實例成員(和其它類),就像任何其他頂層類交互。實際上,爲了方便打包,靜態嵌套類在行爲上是嵌套在另一個頂級類中的頂級類。

LinkedList.Node沒有必要成爲頂級類,因爲它只被LinkedList使用。因爲它不需要訪問LinkedList的成員,所以它是靜態的 - 這是一個更清潔做法。

相關問題