tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
245
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    Hallo allerseits,

    ich habe folgenden Code:

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

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

    Dann habe ich mir den Inhalt der Liste 'listElements' printen lassen:
    Code :
    1
    
    [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
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Du darfst dann halt entsprechend nicht auf Element sondern musst auf ConfigEntry casten.

    Das sollte auch mit instanceof funktionieren:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    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());
        }
    }
    Geändert von zeja (01.08.07 um 10:31 Uhr)
     

  3. #3
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    Dann gibt er aber die gleiche Exception in der folgenden Zeile aus:

    Code :
    1
    
    ConfigEntry el1 = (ConfigEntry) listElements.get(a);
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    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?
     

  5. #5
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    @1: Trotzdem immernoch der gleiche Fehler !

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

    @3: mit 5.0
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

  6. #6
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Wenn du Java 5 hast dann kannst du doch die Generischen Typparameter benutzen und brauchst dann gar nicht mehr Casten:

    Code java:
    1
    2
    3
    4
    5
    6
    
    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.
     

  7. #7
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    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 :
    1
    
    Attribut1 = Integer.valueOf(file[0]);

    Und wenn ich das 'else' in deinem Code entferne, kommt eine 'java.lang.NumberFormatException: null'
    Geändert von _Truck_ (01.08.07 um 11:02 Uhr)
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

  8. #8
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    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
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

Ähnliche Themen

  1. komische ClassCastException
    Von MrOTJ im Forum Java
    Antworten: 4
    Letzter Beitrag: 09.06.09, 14:50
  2. ClassCastException
    Von BDiegelmann im Forum Java
    Antworten: 5
    Letzter Beitrag: 17.01.07, 18:19
  3. ClassCastException: $Proxy
    Von GartenUmgraben im Forum Java
    Antworten: 8
    Letzter Beitrag: 08.06.05, 00:57
  4. ClassCastException
    Von mickry_jordan im Forum Java
    Antworten: 7
    Letzter Beitrag: 14.08.04, 09:53
  5. ClassLoader + ClassCastException
    Von Cybernd im Forum Java
    Antworten: 3
    Letzter Beitrag: 05.07.04, 13:42