2017-04-23 77 views
-2

我在論壇中搜索,我明白getClass()返回一個參考 ,但它是一個特殊的參考,並且每個呼叫getClass返回給定的類完全相同的參考。這意味着我們可以使用「==」而不是「equals」來比較它們。getClass()返回什麼作爲參考?

我想知道這是如何特別提到創建並返回每一次和每一次

+1

請參閱鏈接http://stackoverflow.com/questions/2812680/getclass-method-in-java –

回答

1

是怎麼回事一樣Class對象爲每個類是一個單例。這意味着它以這樣的方式寫入,即每個類只有一個對象存在。

+0

恐怕這不是我正在尋找的答案。我不確定,但我認爲它建立在類加載器中,你能給我更多的細節嗎? –

+0

關於什麼的更多細節? –

+0

getClass如何工作!當我們爲每個類運行代碼時,它會形成一個內存空間嗎? –

0
  1. getClass()方法返回對象的運行時類。
  2. 返回的類對象是被表示類的靜態同步方法鎖定的對象。
+0

,getClass爲我們的類創建一個引用,並且每當我們返回時調用getClass? –

0

A.R.,我懷疑你是在混淆一個Class對象,與該類對象的實例。他們不一樣。

每種Java類型只有一個Class對象。 getClass返回對該Class對象的引用。因爲只有一個這樣的對象,所有對它的引用都是相同的,並且==起作用。類對象在第一次被使用時被加載,由ClassLoader加載。沒有人需要「創建」引用它。它坐在那裏,在記憶中,可以被引用。正如@JoeC指出的那樣,它是一個單身人士。巴姆!

可能有許多實例給定的類。每個獨立實例都有自己的狀態,不與任何其他實例共享。作爲其狀態的一部分,每個實例具有的其中一個事物是對其Class的引用。當然,這個參考文獻與其他每個班級的參考文獻都是一樣的。他們是==

已修改添加:瞭解Class對象本身是Class<?>類型的實例可能會有所幫助。可能有很多String s,但只有一個Class<String>的實例,其類型(Class)是Class<?>