ClassCastException

_Truck_

Erfahrenes Mitglied
Hallo allerseits,

ich habe folgenden Code:

Code:
for (int a=0; a<101; a++) {
			 
				 Element el1 = (Element) listElements.get(a);
				 file[a] = el1.getText().toString();
		 }

Allerdings bekomme ich die Fehlermeldung:
Code:
Exception in thread "main" java.lang.ClassCastException.

Dann habe ich mir den Inhalt der Liste 'listElements' printen lassen:
Code:
[ConfigEntry@1201a25, ConfigEntry@94948a, ...
ConfigEntry ist dabei eine andere Klasse, mit welche ich ein paar Lines zuvor mit new ConfigEntry() (neues Objekt) aufrufe.

Ich habe es schon mit 'if (... instanceof ...)' probiert, ging aber trotzdem nicht !

Wie umgehe ich dieses Problem ?

Danke im Voraus, Gruß Truck
 
Du darfst dann halt entsprechend nicht auf Element sondern musst auf ConfigEntry casten.

Das sollte auch mit instanceof funktionieren:
Java:
for (int a=0; a<101; a++) {
     Object obj = listElements.get(a);
     if(obj instanceof Element){
          Element el1 = (Element) obj;
          file[a] = el1.getText().toString();
    }
    else if(obj instanceof ConfigEntry){
         ConfigEntry el1 = (ConfigEntry) obj;
    }
    else{
          System.out.println(obj.getClass().getName());
    }
}
 
Zuletzt bearbeitet:
Dann gibt er aber die gleiche Exception in der folgenden Zeile aus:

Code:
ConfigEntry el1 = (ConfigEntry) listElements.get(a);
 
Oh sorry mein Code war auch so nicht ganz richtig... habs nochmal korrigiert.

Wie sieht denn dein Code nun genau aus?

Und programmierst du noch mit Java 1.4 oder schon 5 oder 6?
 
@1: Trotzdem immernoch der gleiche Fehler !

@2: Viel zu umfangreich... was brauchst du denn geanu ?

@3: mit 5.0
 
Wenn du Java 5 hast dann kannst du doch die Generischen Typparameter benutzen und brauchst dann gar nicht mehr Casten:

Java:
ArrayList<String> stringList = new ArrayList<String>();
stringList.add("Hello ");
stringList.add("World");
for(String s : stringList){
  System.out.print(s);
}

Und wenn du meinen Code einfach kopierst sollte es keine ClassCastException mehr geben, da ja vor dem Cast mit instanceof geprüft wird ob der Cast erlaubt ist.
 
Falls es weiterhilft:
Unten schreibe ich die erhaltenen Arraysinhalte von File in Attribute, die ich dann noch weiter unten in der überschriebenen toString()- Methode per StringBuffer formatiere:

Code:
Attribut1 = Integer.valueOf(file[0]);

Und wenn ich das 'else' in deinem Code entferne, kommt eine 'java.lang.NumberFormatException: null'
 
Zuletzt bearbeitet:
Habe das Problem gelöst bekommen, und zwar habe ich anstatt dem Element mit einem Objekt gearbeitet. So lässt es sich nun problemlos casten !

Danke dir Zeja für deine Bemühung.
Springt auch positive Bewertung dafür heraus ;).

Gruß Truck
 
Zurück