重新实例化对象而不会丢失先前的对象

时间:2014-02-03 00:20:39

标签: java

我不太确定如何为我的作业解决这个问题。

我被要求跟踪多个航班,它们全部存储在一个文件中,每条线代表每个航班的各个方面。我被要求按有序列表中的航班号跟踪每个航班。

现在我只是试图在没有任何fileIO的情况下测试我的代码。这就是我现在所拥有的,

OrderedList flights = new OrderedList();

Flight flight = new Flight();
flight.setFlightNumber(678);
flights.add(flight);

flights.printList();

此代码工作正常,但是当我执行我的fileIO时,我需要将变量重新实例化到另一个航班,

....
flight = new Flight();
flight.setFlightNumber(876);
flights.add(flight);

flights.printList();

我认为这里发生的事情是找不到旧航班的指针?有没有人对如何解决这个问题有任何建议?

编辑:更多信息,编译时我得到一个运行时错误:

Exception in thread "main" java.lang.ClassCastException: Flight cannot be cast to java.lang.Integer

我的OrderedList类中的错误被添加到了

的add methods行
while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) {

这是调试器的屏幕截图

Debugger

2 个答案:

答案 0 :(得分:3)

java.lang.ClassCastException: Flight cannot be cast to java.lang.Integer

这意味着您尝试将Flight转换为Integer。航班不是整数,所以你不能这样做。

如果它发生在这一行:

while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) {

那么你投的东西是current.getData()的结果。所以current.getData()返回了一个Flight,你试图将它转换为Integer。我猜你实际上是这样的意思:

while(current != null && (newFlight.getFlightNumber() > ((Flight)current.getData()).getFlightNumber())) {

答案 1 :(得分:0)

在我看来,您不会丢失以前的航班记录,因为OrderedList会保留这些记录的参考。