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')
	

 

感觉你的写法上有问题:

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}

运行时出现异常很正常,因为你根本没向集合中写入数据,反序列化怎么讲一个空数据转成集合!!

 

还有,方法命名要符合驼峰规则,不要用大写字母开头!!!