我不太确定应该如何解决我的作业中的这个问题。
我被要求跟踪多个航类,它们都存储在一个文件中,每一行代表每个航类的各个方面。我被要求在有序列表中按航类号跟踪每个航类。
现在我只是想在没有任何 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 类的添加方法行之一中引发的,
while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) {
这是调试器的屏幕截图,
最佳答案
java.lang.ClassCastException: Flight cannot be cast to java.lang.Integer
这意味着您尝试将 Flight 转换为整数。航类不是整数,所以你不能这样做。
如果发生在这一行:
while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) {
那么您要转换的内容就是 current.getData()
的结果。因此,current.getData()
返回了一个 Flight,并且您尝试将其转换为 Integer。我猜你的意思实际上是这样的:
while(current != null && (newFlight.getFlightNumber() > ((Flight)current.getData()).getFlightNumber())) {
关于java - 重新实例化对象而不丢失先前的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518064/