m0_57996106 2021-06-29 15:45 采纳率: 50%
浏览 178
已结题

java强转类型从错误!

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

public class Read {
	ArrayList<Student>list=new ArrayList<>();
	ArrayList<Normal>list1=new ArrayList<>();
	public  ArrayList<Student> ReadStudent() throws Exception {
            ObjectInputStream oip=new ObjectInputStream(new FileInputStream("Date.txt"));
                    list=(ArrayList<Student>) oip.readObject();
                    return list;
	}
	public  ArrayList<Normal> ReadNormal()throws Exception  {
            ObjectInputStream oip=new ObjectInputStream(new FileInputStream("NormalDate.txt"));
                    list1=(ArrayList<Normal>) oip.readObject();
		return list1;
	}
}



编译时出现如下错误:
Exception in thread "main" java.lang.ClassCastException: class Student.Student cannot be cast to class java.util.ArrayList (Student.Student is in unnamed module of loader 'app'; java.util.ArrayList is in module java.base of loader 'bootstrap')
	
  • 写回答

2条回答 默认 最新

  • 小P聊技术 2021-06-29 15:55
    关注

    感觉你的写法上有问题:

    package Java学习.Java高级.IO.类对象的IO流ObjectInputStream.练习序列化集合;
    
    import java.io.*;
    import java.util.ArrayList;
    
    /**
    * 一、要求:在文件中保存多个对象
    * 二、步骤;
    * 1.new ArrayList<Person>()新建结合
    * 2.在集合中添加对象
    * 3.序列化集合ArrayList
    * 4.反序列化集合并遍历输出
    */
    public class Demo {
       public static void main(String[] args) throws IOException, ClassNotFoundException {
           //1.
           ArrayList<Person> personArrayList = new ArrayList<>();
           //2
           personArrayList.add(new Person("张三",13));
           personArrayList.add(new Person("李四",14));
           personArrayList.add(new Person("王五",15));
           //3序列化集合
           String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习\\Java高级\\IO\\类对象" +
                   "的IO流ObjectInputStream\\练习序列化集合\\集合的序列化.txt";
           ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(url));
           objectOutputStream.writeObject(personArrayList);
           objectOutputStream.flush();
           objectOutputStream.close();
           //4.反序列化
           ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(url));
           Object object = objectInputStream.readObject();
           System.out.println("反序列化的对象object: "+object);
           System.out.println("强转然后遍历输出结果:");
           personArrayList = (ArrayList<Person>)object;
           for (Person person : personArrayList) {
               System.out.println(person);
           }
       }
    }
    

    Run:
    反序列化的对象object: [Person{name=‘张三’, age=13}, Person{name=‘李四’, age=14}, Person{name=‘王五’, age=15}]
    强转然后遍历输出结果:
    Person{name=‘张三’, age=13}
    Person{name=‘李四’, age=14}
    Person{name=‘王五’, age=15}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵