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