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

标签 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 类的添加方法行之一中引发的,

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

这是调试器的屏幕截图,

Debugger

最佳答案

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/

相关文章:

java - 找不到 android.arch.lifecycle :compailer:1. 1.1 错误

java - 如何使用发布插件在发布期间解析范围

java - 如何在linux中终止java代码

java - 如何查看 "anti if"运动及其目标?

java - 当线程死亡时执行操作

java - 如何避免对包装类上实现的每个方法的包装对象进行空检查

java - 在 ArrayList 的 add() 方法中创建新对象会导致内存泄漏。我能做些什么不同的事情?

java - 具有读写模式的 RandomAccessFile 过滤器在 Linux 环境下不起作用

java - 带有 Activity 编辑器的 Vaadin 双击网格上的按钮会引发异常 ("java.lang.NullPointerException: Editor can' t edit null")

java - 所实现的接口(interface)缺少可选方法/操作会导致错误