1. 程式人生 > >Java之靜態方法中的內部類

Java之靜態方法中的內部類

靜態方法中不能直接建立內部類,為什麼呢?
在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。
靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數和例項方法。
在靜態方法中,當嘗試直接去 new一個內部類(沒有先 new 該內部類的外部類)的時候,由於靜態方法無需建立物件,靜態方法會嘗試直接建立一個內部類(不會去建立該內部類的外部類,但矛盾的是內部類能訪問各成員變數意味著一定存在外部類實體物件(內部類存在的本身的前提是有該內部類的外部類
)。
所以在這個地方出現了矛盾,即靜態方法中不能直接建立內部類。
有以下幾種解決辦法:
1. new內部類時需要加final修飾(必須final!);
2. 寫一個非靜態方法!3. new 外部類().非靜態方法。