В приведенном ниже коде,Что такое идентификация и состояние объектов типа "java.lang.Enum" в java?
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
@overexchange Да, см. Ссылки, приведенные в ответе. _ Для каждой переменной enum c, объявленной в теле объявления E, E имеет неявно объявленное публичное статическое конечное поле типа E, которое имеет то же имя, что и c. Поле имеет переменный инициализатор, состоящий из c, и аннотируется теми же аннотациями, что и c._ –
В моем предыдущем запросе неправильно сказано, что «x1 == x2» сравнивает значения. '==' фактически сравнивает ссылки на объекты. верный? – overexchange