Ergebnis 1 bis 11 von 11

Thema: Vector<class> laden und speichern per Java

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Man kommt da nicht drumherum, die Annotation @SuppressWarnings("unchecked") zu verwenden, um den Cast ohne Warnhinweis durchzuführen.
    Allerdings sollte man sich schon vergewissern, dass im Vektor korrekte Daten stehen, bevor man den Cast ausführt. Ansonsten kann es zu einem Absturz kommen.
    Meine Lösung würde folgendermaßen aussehen:
    Code (Java):
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.StreamCorruptedException;
    import java.util.Vector;
     
     
    public class Test {
     
        private static 
        void saveData(Vector<?> data, String filename) throws IOException
                                                            , FileNotFoundException
        {
            FileOutputStream   fos = new FileOutputStream(filename);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
     
            oos.writeObject(data);
            oos.close();
        }
     
     
        private static 
        Vector<?> readData(String filename) throws IOException
                                                 , FileNotFoundException
                                                 , ClassNotFoundException
                                                 , StreamCorruptedException
        {
            FileInputStream   fis = new FileInputStream("t.tmp");
            ObjectInputStream ois = new ObjectInputStream(fis);    
     
            return (Vector<?>) ois.readObject();
        }
     
     
        private static 
        boolean hasStrings(Vector<?> vector)
        {
            return vector.get(0).getClass().toString().equals(new String().getClass().toString());
        }
     
     
        @SuppressWarnings("unchecked")
        private static 
        Vector<String> convertData(Vector<?> v1)
        {
            return (Vector<String>)v1.clone();
        }
     
     
        public static 
        void main(String[] args)
        {
            Vector<String> bands   = new Vector<String>();
            Vector<String> bands2  = new Vector<String>();
            Vector<?>     temp     = null;
            String        filename = "t.tmp";
     
            bands.add("1");
            bands.add("2");
     
            // Daten werden in die Datei gespeichert
            try 
            {
                saveData(bands, filename);
            } 
            catch (Exception e) 
            {
                System.out.println("Fehler beim Schreiben der Datei: " + e.getLocalizedMessage());
            }
     
            // Daten werden aus der Datei gelesen
            try 
            {
                temp = readData(filename);    
            } 
            catch (Exception e) 
            {
                System.out.println("Fehler beim Lesen der Datei: " + e.getLocalizedMessage());
            }    
     
            // Daten werden auf Richtigkeit geprüft
            if ((temp != null) && !temp.isEmpty() && hasStrings(temp))
            {
                // Daten werden in bands2 gespeichert
                bands2 = convertData(temp);    
            }
            else 
            {
                System.out.println("Es konnten keine Datensätze gelesen werden.");
            }
     
            System.out.println("Daten in bands2: " + bands2.toString());
        }
    }
     


    Das Fragezeichen, bei Vector<?> temp = null; ist ein Wildcard und bedeutet, dass dies ein Vector, mit einem unbekannten Typ als Element, ist.

    Geändert von Whiz-zarD (29.05.2011 um 22:39 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •