靜態方法中不能直接建立內部類,為什麼呢?在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。
靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數和例項方法。
在靜態方法中,當嘗試直接去 new乙個內部類(沒有先 new 該內部類的外部類)的時候,由於靜態方法無需建立物件,靜態方法會嘗試直接建立乙個內部類(不會去建立
該內部類的外部類
),但矛盾的是內部類能訪問各成員變數意味著一定存在外部類實體物件(內部類存在的本身的前提是有該內部類的外部類)。
所以在這個地方出現了矛盾,即靜態方法中不能直接建立內部類。
有以下幾種解決辦法:
1. new內部類時需要加final修飾(必須final!);
2. 寫乙個非靜態方法!3. new 外部類().非靜態方法。
Java內部類之靜態內部類
靜態內部類 巢狀內部類 內部類定義時加上static關鍵字。可以使用public protected default private修飾符。只可以訪問外部類的靜態成員和靜態方法,包括了私有的靜態成員和方法。生成靜態內部類物件的方式為 outerclass.innerclass innerobj ne...
Java內部類 靜態內部類
靜態內部類是外部類的靜態成員,不依賴於外部類的物件而存在,因此在外部類外面建立靜內部類物件時不需要首先建立外部類的物件 靜態內部類也可以稱為靜態巢狀類或頂級巢狀類。靜態內部類與外部類物件之間不存在著對成員的共享關係,靜態內部類其實已經脫離了外部類的控制 static關鍵字只是說明其在建立物件的時候不...
JAVA中的內部類 方法內部類
方法內部類就是內部類定義在外部類的方法中,方法內部類只在該方法的內部可見,即只在該方法內可以使用。由於方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和 static 修飾符。下邊的例子 外部類 public class helloworld 建立方法內部類的物件 min...