Каждое значение enum
(у вас есть три) существует только один раз, и каждый раз, когда вы используете одно из них, вы просто повторно используете одно из этих трех значений, создавая ссылку, копий нет.
Это означает, что если вы измените ticketId
на значение FirstClass
, оно будет изменено везде, где указано это значение.
Кажется, вы хотите смоделировать небольшую систему билетов. Каждый объект, имеющий собственную идентичность, должен быть смоделирован как class
, который имеет свойство для типа и идентификатора:
public class Ticket {
private Long ticketId;
private TicketType type;
public Long getTicketId() {
return ticketId;
}
public void setTicketId(Long ticketId) {
this.ticketId = ticketId;
}
public TicketType getType() {
return type;
}
public void setType(TicketType type) {
this.type = type;
}
}
public enum TicketType {
FirstClass(0),
PremiumClass(1),
EconomyClass(2);
private final int elementId;
Ticket(int elementId) {
this.elementId = elementId;
}
public int getElementId() {
return elementId;
}
}
Тогда вы можете использовать это следующим образом:
public void myMethod() {
ArrayList<Ticket> tickets = new ArrayList<>();
Ticket ticket = new Ticket();
ticket.setType(TicketType.FirstClass);
ticket.setTicketId(1L);
tickets.add(ticket);
ticket = new Ticket();
ticket.setType(TicketType.FirstClass);
ticket.setTicketId(2L);
tickets.add(ticket);
}
Я не знаю, зачем вам нужен elementId
для типа билета, поэтому я просто оставил его там (не используя). Возможно, вам следует переименовать ticketId
в id
, чтобы все было просто.
Если type
или ticketId
заявки никогда не меняются после их назначения, вы можете удалить сеттеры и присвоить значения в конструкторе Ticket
(и сделать атрибуты final
).
Даже если это нормально, что они изменяемы, вы можете ввести такой конструктор, чтобы иметь код, который лучше читается:
In Ticket.java:
public Ticket(Long ticketId, TicketType type) {
this.ticketId = ticketId;
this.type = type;
}
Тогда вы можете написать:
tickets.add(new Ticket(1L, TicketType.FirstClass));
Если тикет является персистентной сущностью (которая проверяется фреймворком, таким как Hibernate), вам, возможно, придется оставить конструктор без аргументов, чтобы сделать его инстанцируемым при загрузке из базы данных.