0
在下面的代碼,什麼是Java中「java.lang.Enum」類型對象的身份和狀態?
class Example{}
Example ex1 = new Example();
Example ex2 = new Example();
bool compareAddress = (ex1 == ex2);
這裏,compareAddress
給出false
,因爲身份是由ex1
和ex2
指出的對象的存儲器地址。字段值(如果有的話)在class Example{}
類型的對象內定義該對象的狀態。
但在下面的代碼,
enum Company{
EBAY(30), PAYPAL(10), GOOGLE(15), YAHOO(20), ATT(25);
private int value;
private Company(int value){
this.value = value;
}
}
Company x1 = Company.EBAY;
Company x1 = Company.EBAY;
bool compareValues = (x1 == x2);
這裏,compareValues
給true
。
那麼,x1
和x2
指向的對象的身份和狀態是什麼?
編譯成?您能否提供訪問提供此類信息的資源? – overexchange
@overchange是的,請參閱答案中提供的鏈接。 _對於在E聲明的主體中聲明的每個枚舉常量c,E有一個隱式聲明的類型爲E的公共靜態final字段,其名稱與c相同。該字段有一個由c組成的變量初始值設定項,並用與c._ –
相同的註釋標註。在我上面的查詢中,我錯誤地說'x1 == x2'是比較值。 '=='實際上比較對象引用。正確? – overexchange