1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Krampf mit Java Syntax

  • Nicholas1991
  • 7. Mai 2009 um 22:55
  • Unerledigt
  • Nicholas1991
    9
    Nicholas1991
    Mitglied
    Punkte
    770
    Beiträge
    122
    • 7. Mai 2009 um 22:55
    • #1

    Hallo Community

    ich kämpfe zur Zeit mit Java (wieder einmal ^^). Folgender Code bereitet mir schwierigkeiten:

    Code
    Object o1 = myFWR.readFile("userData.NORM");
            if(o1 instanceof Vector<UserData>) {
                users = (Vector<UserData>) o1;
            } else {
                users = new Vector<UserData>();
            }


    myFWR ist einfach nur eine Klasse mit der ich aus Dateien Objekte auslese.
    users ist vom Typ Vector<UserData>

    Jetzt kommt folgende Fehlermeldung:

    Zitat

    ...: illegal generic type for instanceof
    if(o1 instanceof Vector<UserData>) {

    ...: warning: [unchecked] unchecked cast
    found : java.lang.Object
    required: java.util.Vector<UserData>
    users = (Vector<UserData>) o1;

    Alles anzeigen



    Die erste Nachricht sagt ja im Prinzip einfach nur, dass ich nur Vector ohne <...> nehmen kann. Mein Problem ist aber, dass ich irgendwie versuche diese unchecked Warnung wegzubekommen (ohne jetzt supressWarnings zu nehmen).
    Jetzt denke ich mir mal, dass wenn myFWR automatisch schon einen Vector<UserData> ausspuckt, zumindest diese zwei Probleme wegfallen. Aber dann verschieb ich diese Warnung im Prinzip ja nur in myFWR. Da nehme ich aber von einem ObjectInputStream die Methode readObject(). Wie kann ich hier denn nun die Cast Warnung verschwinden lassen?


    Vielen Dank im Vorraus

    Nicholas


    EDIT: Achso, myFWR sollte natürlich trotzdem so bleiben, dass es vielseitig eingesetzt werden kann. Kann ich da auch mit <...> arbeiten???

  • josef19
    9
    josef19
    Mitglied
    Reaktionen
    9
    Punkte
    749
    Beiträge
    135
    • 7. Mai 2009 um 23:57
    • #2

    Hallo !

    So sollte man in JAVA nicht progamieren! (Ist eher Python/PHP/...-Stil)
    Daher verhält sich auch JAVA "bockig".

    http://openbook.galileocomputing.de/javainsel8/javainsel_14_012.htm

    Warum einfach, wenns kompliziert geht ! USB-CD-ROM mit USB-Stick emulieren

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 8. Mai 2009 um 00:01
    • #3

    Falls du wissenwolltest, ob du eine klasse "typenfrei" schreiben kannst, ja das geht...
    sollte so ca hinhaun:

    Code
    public class Test<T>
    {
    private T t;
    public Test(T t)
    {
    this.t=t;
    }
    }

    ich komm nicht ganz drauf, was du mit dem instanceOf bei dem Vector bezwecken willst?

    Und nein , Vector ohne <...> wird nicht funktionieren, weil dann wär er typenlos (?)

    Thomas

  • Nicholas1991
    9
    Nicholas1991
    Mitglied
    Punkte
    770
    Beiträge
    122
    • 8. Mai 2009 um 00:11
    • #4

    Ist es falsch einen Vector in einer Datei abzuspeichern???

  • grftjx
    2
    grftjx
    Mitglied
    Punkte
    30
    Beiträge
    6
    • 8. Mai 2009 um 10:00
    • #5

    Generics verhalten siche bei solchen Details in Java oft nicht so wie man es erwarten würde... :grinning_face_with_smiling_eyes:

    Hier gibt es eine ausführliche Erklärung dazu, insbesondere unter dem Punkt "Unchecked Casts" steht, was in solchen Fällen zu tun ist. Die Warnung wird man daher nicht wegbekommen.

    Auf dein Problem übertragen dürfte es wahrscheinlich so funktionieren:

    Code
    Object o1 = myFWR.readFile("userData.NORM");
    if(o1 instanceof Vector) {
        users = (Vector<UserData>) o1;
    } else {
        users = new Vector<UserData>();
    }
  • Nicholas1991
    9
    Nicholas1991
    Mitglied
    Punkte
    770
    Beiträge
    122
    • 8. Mai 2009 um 13:16
    • #6

    Jo Funktioniert, musste leider supress Warning anmachen. aber naja

    Danke jedenfalls allen

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 2 Besucher

Rechtliches

Impressum

Datenschutzerklärung