Сохранение файла с ошибкой приведения
java.lang.ClassCastException: infrastructure cannot be cast to terrain
at p2_assign_version2.main(p2_assign_version2.java:98)
Это ошибка, которая постоянно печатается, когда я пытаюсь создать свой файл. Из-за этой ошибки я не могу напечатать все мои данные в моем terrain.txt
Кто-нибудь здесь знает, как я могу исправить ошибку?
и ниже - набор кода, который вызывает ошибку
File terrain=new File("terrain.txt"); //To create file
boolean tExist=terrain.exists();
terrain[]terrains = new terrain[100];
if(!tExist)
{
try
{
FileOutputStream fos = new FileOutputStream("terrain.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
terrains[0] = new terrain("Grass", true);
oos.writeObject(terrains[0]);
terrains[1] = new terrain("Water", false);
oos.writeObject(terrains[1]);
terrains[2] = new terrain("Pavement", false);
oos.writeObject(terrains[2]);
terrains[3] = new terrain("Road", false);
oos.writeObject(terrains[4]);
terrains[5] = new terrain("Drainage", false);
oos.writeObject(terrains[5]);
terrains[6] = new terrain("Hill", false);
oos.writeObject(terrains[6]);
terrains[7] = new terrain("Bushes", false);
oos.writeObject(terrains[7]);
terrains[8] = new terrain("Tree", false);
oos.writeObject(terrains[8]);
oos.flush();
oos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
else
{
try
{
FileInputStream fis=new FileInputStream("terrain.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
for (p=0; p<terrains.length; p++)
{
if(terrains[p] == null)
{
//this is the line that causes error to be printed//
terrains[p] = (terrain) ois.readObject();
}
}
ois.close();
}
catch(EOFException eof)
{
}
catch(FileNotFoundException fnfe)
{
System.out.println("There seems to be a problem reading from the file");
}
catch(Exception e)
{
e.printStackTrace();
}
}
1 ответ
Объект в ObjectInputStream является экземпляром infrastructure
класс, а не экземпляр terrain
учебный класс. Это будет работать:
(infrastructure) ois.readObject()
Невозможно помочь вам, не зная больше о коде, который создал ваш terrain.txt
файл. Либо вам нужна документация, которая точно скажет вам, какие объекты были записаны в этот файл, либо вам нужно изучить код, который написал файл, чтобы вы могли точно знать, какие объекты были написаны.
Примечание: объекты Java не сериализуются как обычный текст, поэтому некорректно называть файл, содержащий сериализованные объекты Java, .txt
расширение. Обычно .ser
расширение используется для таких файлов.