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?
-
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.
MachArrayList<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???