我在java中实现Ticket类。 这是我的代码:
public class Ticket {
private String name;
private Float defaultPrice;
private Event event;
private static ArrayList<Ticket> ticketList;
public Ticket(String name, Float defaultPrice) {
this.name = name;
this.defaultPrice = defaultPrice;
}
public ArrayList<Ticket> getAllTickets() {
return ticketList;
}
我的主要问题是如何创建Ticket类的实例,ticketList具有新创建的Ticket对象。因为后来我使用公共getAllTickets()方法来获取所有票证。 提前谢谢!
答案 0 :(得分:1)
我无法发表评论所以我必须回答。 您是否意味着每当创建一张票时,您需要将每张票存储在列表中?
如果是这样,请将构造函数设为私有并提供工厂方法。
像这样:
public class Ticket {
private String name;
private Float defaultPrice;
private Event event;
private static ArrayList<Ticket> ticketList;
static {
ticketList = new ArrayList<>();
}
private Ticket(String name, Float defaultPrice) {
this.name = name;
this.defaultPrice = defaultPrice;
}
public static ArrayList<Ticket> getAllTickets() {
return ticketList;
}`
public static Ticket getInstance(String name, Float defaultPrice)
{
Ticket temp = new Ticket(name, defaultPrice);
ticketList.add(temp);
return temp;
}
答案 1 :(得分:1)
完整示例:
package stackoverflow;
import java.math.BigDecimal;
public class Ticket {
private String name;
private BigDecimal defaultPrice;
public Ticket(String name, BigDecimal defaultPrice) {
this.name = name;
this.defaultPrice = defaultPrice;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name =
name;
}
public BigDecimal getDefaultPrice() {
return defaultPrice;
}
public void setDefaultPrice(BigDecimal defaultPrice) {
this.defaultPrice = defaultPrice;
}
}
活动类:
package stackoverflow;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Event {
private Date date;
private List<Ticket> ticketList;
public Event(Date date) {
this.date = date;
this.ticketList = new ArrayList<>();
}
public void addTicket(Ticket ticket) {
this.ticketList.add(ticket);
}
public List<Ticket> getTicketList() {
return this.ticketList;
}
}
主要课程:
package stackoverflow;
import java.math.BigDecimal;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Event eventX = new Event(new Date());
eventX.addTicket(new Ticket("ticket1", new BigDecimal(50)));
eventX.addTicket(new Ticket("ticket2", new BigDecimal(50)));
eventX.addTicket(new Ticket("ticket3", new BigDecimal(50)));
eventX.addTicket(new Ticket("ticketPremium", new BigDecimal(100)));
for (Ticket ticket: eventX.getTicketList()) {
System.out.println("name:" + ticket.getName() + " price: " + ticket.getDefaultPrice());
}
}
}
答案 2 :(得分:0)
选项1
如果您正在尝试确保每个新票证都将自己添加到自己的票证列表中,则可以在构造函数中轻松处理:
public Ticket(String name, Float defaultPrice) {
this.name = name;
this.defaultPrice = defaultPrice;
this.ticketList = new ArrayList<Ticket>();
this.ticketList.add(this);
}
选项2
您还可以使用单独的类方法将票证添加到列表,而在初始化新票证时使用该方法。例如,您的Ticket
类将具有以下内容:
public void addTicketToList(Ticket ticket){
this.ticketList.add(ticket);
}
然后,当您创建新票证时,您可以使用:
Ticket newTicket = new Ticket();
newTicket.addTicketToList(newTicket);