請先看這個程序:http://algs4.cs.princeton.edu/13stacks/Bag.java.html
菜鳥提問,為什麼內部類聲明成了static?有什麼作用麼?
static關鍵字內部類,目的是告訴虛擬機只有一份變量聲明。
private static class Node {
private Item item;
private Node next;
}
這段代碼其實不論在bag當前文件內,還是由一個別的java文件單獨聲明,虛擬機不會因為當前bag實例的不同時間點的初始化單獨創建一份了。
但這裡這樣寫還有一個別的目的,就是在用到bag這個類的時候才告訴虛擬機“node這個類只要初始化一次”就可以了。
如果將node這個類以單獨文件,那麼虛擬機在啟動java運行時就執行了“node這個類只要初始化一次”這樣的操作了。
詳細設計上寫法的區別也就是上面的區別。目的就是用到的時候才聲明去解釋一些事情。希望這樣的描述對你有用。