0
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(); 
     } 
    } 
+0

1) Для лучшей помощи раньше, отправьте сообщение [SSCCE] (http://sscce.org/). 2) Изменить код формы 'catch (Исключение e) {..' to' catch (Исключение e) {e.printStackTrace(); // очень информативно! ..' –

+0

Похоже, что «ландшафт» не происходит из «инфраструктуры». –

+0

'terrains [3] = новый рельеф (« Дорога », ложь); oos.writeObject (terrains [4]); «Вы что-то забыли? – johnchen902

ответ

0

Объект в ObjectInputStream является экземпляром класса infrastructure, не является экземпляром класса terrain. Это будет работать:

(infrastructure) ois.readObject() 

Это не возможно, чтобы помочь вам в дальнейшем, не зная о коде, который создал файл terrain.txt. Вам нужна документация, которая сообщает вам, какие именно объекты были записаны в этот файл, или вам нужно изучить код, который написал файл, чтобы вы могли точно знать, какие объекты были написаны.

Замечание: объекты Java не сериализуются как текстовые, поэтому неверно называть файл, содержащий сериализованные объекты Java, с расширением .txt. Обычно для таких файлов используется расширение .ser.

 Смежные вопросы

  • Нет связанных вопросов^_^