2011-07-16 97 views
0

我想知道當你創建一個對象時會發生什麼,但是我沒有在Object.java中找到一個Object()構造方法,即使文檔說Object()存在。當你調用新的Object()時會發生什麼?

+2

在Java中,每個類如果沒有定義構造函數,則已經有一個爲空參數。 –

+0

@Asad Rasheed它仍然可能是一個受保護的或私有的構造函數。爲什麼公開?第二個想法:也許該構造需要公開,所以你可以實例化一個對象數組? – Jeremy

+0

@Jeremy:由於Java對其進行了明確定義,所以它應該受到最少的限制。這是我的意見可能是錯誤的這個聲明。 –

回答

4

對象確實有一個無參數的構造函數,您可以通過傾銷類的字節代碼看到它,使用

javap -v java.lang.Object 


public java.lang.Object(); 
Code: 
Stack=0, Locals=1, Args_size=1 
0: return 
LineNumberTable: 
line 20: 0 
2
Object object = new Object(); 

這是完全有效的代碼。它基本上什麼都不做。我已經看到了它的唯一用途是用它作爲鎖:

int c = 0; 
Object lock = new Object(); 

... 

synchronized(lock) { 
    c++; 
} 
+1

這不是(完全)的問題。 – delnan

+0

新的對象()除了鎖可以用作鍵或標記值,還有更多的選項可以利用返回的指針,但這些都不在討論範圍之內。好的是,指針是100%獨特的,這很重要。 – bestsss

+0

啊......重讀這個問題,並意識到他正在查看源代碼。之前沒有完全理解。只是以爲他正在試圖創造一個新的對象。 – Joel

相關問題