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日

悬赏问题

  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源