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 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器