java uses unchecked or unsafe operations???



  • Mein Compiler gibt mir folgende Warnung aus:

    datei.java uses unchecked or unsafe operations.
    

    Ich habe durch auskommentieren herausgefunden, dass der "Fehler" in der Zeile

    text.add(zeile);
    

    auftritt. Hier ist die ganze Klasse:

    import java.io.*;
    import java.util.*;
    
    class datei
    {
    	public static void datei(Grafik gui)
    	{
    		ArrayList text = new ArrayList(2);
    		int zaehler = 0;
    
    		try
    		{
    			BufferedReader br1 = new BufferedReader(new               
                                                            FileReader("text.txt"));	
    			String zeile;
    
    			while((zeile=br1.readLine()) != null)
    			{
    					text.add(zeile);
    					zaehler++;
    			}
    			br1.close();
    		}
    		catch(IOException e)
    		{
    		}
    
    		for(int i=0;i<zaehler;i++)
    		{
    			gui.ausgabe.append(text.get(i) + "");			
    		}
    	}
    
    }
    

    ausgabe ist ein JTextArea, falls das von Bedeutung ist. Die Textdatei wird Zeile für Zeile da reingeschrieben. Kann mir jemand vielleicht sagen, warum Java die oben angesprochene Zeile nicht mag? 😕


  • Mod

    1. Welchen Compiler nutzt Du?

    2. Ist dein Programm ein Applet?



  • Wenn du Java 5 und Eclipse-Compiler benutzt, dann liefert der Compiler das Warning weil deine ArrayList keinen Type hat.
    Mach

    ArrayList<String> text = new ArrayList<String>(2);
    

    Dann kann der Compiler prüfen ob du in deine Liste auch die richtigen Typen einfügst.

    Dann kannste statt dem zaeler und

    for(int i=0;i<zaehler;i++) 
            { 
                gui.ausgabe.append(text.get(i) + "");            
            }
    

    einfach schreiben:

    for ( String next : text )
    {
        gui.ausgabe.append(next);
    }
    


  • @DEvent: Habe deinen Tipp mal zuerst ausprobiert, das hat schon geholfen, danke. Da hätte ich jetzt aber eine andere Frage: ich dachte, dass ein einzelnes ArrayList verschiedene Datentypen aufnehmen kann; deswegen habe ich auch bei der Definition keinen Typ angegeben. Aber das beißt sich ja mit dieser TypAngabe, die ich hier vornehmen musste. Wie ist das also mit den ArrayLists: ein Typ oder verschiedene innerhalb eines ArrayLists? In der Doku steht nur dass es alle Elemente erlaubt 😕



  • Es scheint doch zu gehen, es wird ja nur eine Warnung ausgegeben.
    "datei.java uses unchecked or unsafe operations."

    Es geht ja anscheinend, aber es ist eben eine unsichere Operation 🙂



  • Ja, ich wollt vor allem wissen was dahintersteckt, und auch CompilerWarnungen haben ja einen gewissen Sinn. Und es soll ja alle schön ordentlich sein 😃



  • // 500000000 Zeilen davor
    ArrayList liste = new ArrayList(3);
    liste.add("Blaaa");
    liste.add(1);
    liste.add(1.0f);
    System.out.println(rechne(liste));
    
    // 100000 Zeilen später
    public float rechne(ArrayList liste)
    {
        float zahl = 0;
        for ( int i = 0; i < liste.size(); i++ )
        {
             zahl += (Float)liste.get(i);
        }
        return zahl;
    }
    

    Kein Compilerfehler, also ist doch alles ok, nur wieso funktioniert das Programm nicht???


Anmelden zum Antworten