0
java.lang.ClassCastException: infrastructure cannot be cast to terrain 
at p2_assign_version2.main(p2_assign_version2.java:98) 

C'est l'erreur qui est constamment imprimée lorsque j'essaie de créer mon fichier. En raison de cette erreur je ne suis pas en mesure d'imprimer toutes mes données dans mon terrain.txtEnregistrement d'un fichier avec erreur de conversion

Est-ce que quelqu'un ici sait comment je peux corriger l'erreur?

et au-dessous est l'ensemble de code qui est à l'origine de l'erreur apparaisse

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) Pour une meilleure aide plus rapidement, postez un [SSCCE] (http://sscce.org/). 2) Changer le code de la forme 'catch (Exception e) {..' en' catch (Exception e) {e.printStackTrace(); // très instructif! ..' –

+0

Apparemment, 'terrain' ne dérive pas de' infrastructure'. –

+0

'terrains [3] = nouveau terrain (" Route ", faux); oos.writeObject (terrains [4]); Avez-vous oublié quelque chose ici? – johnchen902

Répondre

0

L'objet dans ObjectInputStream est une instance de la classe infrastructure, pas une instance de la classe terrain. Cela fonctionne:

(infrastructure) ois.readObject() 

Il est impossible de vous aider sans en savoir plus sur le code qui a créé votre fichier terrain.txt. Soit vous avez besoin d'une documentation qui vous indique exactement quels objets ont été écrits dans ce fichier, soit vous devez examiner le code qui a écrit le fichier afin que vous puissiez savoir exactement quels objets ont été écrits. Remarque: Les objets Java ne sont pas sérialisés en texte brut. Il est donc incorrect de nommer un fichier contenant des objets Java sérialisés avec une extension .txt. Habituellement, l'extension .ser est utilisée pour ces fichiers.

Questions connexes