Warnung zu Generics (Java 1.6)

Status
Nicht offen für weitere Antworten.

Onkel Hatti

Bekanntes Mitglied
Hallo Alle.

Ich entwickele in Eclipse und habe ein Problem mit den Generics.

Java:
package de.hk.test;

import java.util.Enumeration;
import javax.swing.tree.DefaultMutableTreeNode;

public class Test2Class {

	public static void main(String[] args)
	{
		DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");
		for(int i=0; i<10;i++)
		{
			DefaultMutableTreeNode node=new DefaultMutableTreeNode("node"+i);
		}

		Enumeration e=root.children();
		while(e.hasMoreElements())
		{
			DefaultMutableTreeNode n=(DefaultMutableTreeNode)e.nextElement();
		}
	}

}

Wenn ich das so mache, geht es, aber Eclipse warnt mich bei "Enumeration e=root.children();":

"Enumeration is a raw type. References to generic type Enumeration<E> should be parameterized"

OK, dachte ich mir, ist ja klar, Enumeration sollte mit dem, was es zu erwarten hat, parametrisiert werden.

Java:
package de.hk.test;

import java.util.Enumeration;
import javax.swing.tree.DefaultMutableTreeNode;

public class Test2Class {

	public static void main(String[] args)
	{
		DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");
		for(int i=0; i<10;i++)
		{
			DefaultMutableTreeNode node=new DefaultMutableTreeNode("node"+i);
		}

		Enumeration <DefaultMutableTreeNode>e=root.children();
		while(e.hasMoreElements())
		{
			DefaultMutableTreeNode n=e.nextElement();
		}
	}

}

Das geht auch, aber nun warnt mich Eclipse:

"Type safety: The expression of type Enumeration needs unchecked conversion to conform to Enumeration<DefaultMutableTreeNode>"

Wo ist mein Gedankenfehler? Wie bekomm ich die Warnung weg? (Ausser durch "@SupressWarnings")

Hatti
 

Wortraum

Bekanntes Mitglied
root.children() gibt eine Aufzählung ohne Parametertyp zurück, und die soll in eine Aufzählung mit Parametertyp DefaultMutableTreeNode gesteckt werden; die Warnung ist also berechtigt. Da kannst Du gar nichts machen, außer diese Warnung zu unterdrücken.
 

0x7F800000

Top Contributor
Generics = 1.5
Swing = 1.2

gottverdammt, wie haben die es bloß gewagt Generics in eine Sprache nicht von anfang an einzuplanen? ;(

Sehe da jedenfalls auch keine Alternative, imho müsstest du einfach alles explizit casten und alle warnungen mit @SupressWarnings plattmachen. Und ärgere dich über diesen altertümlichen schrott nicht zu sehr: damit kann man auch irgendwie leben, aber sorge einfach dafür, dass du nicht selbst solchen typunsicheren Kram fabrizierst ;)
 

Marco13

Top Contributor
Da die Frage damit vermutlich beantwortet ist, ein bißchen ""off""-Topic (lohnt sich dafür ein eigener Thread?). Was ist mit "Swing 2.0" - mit Generics? (GEHT das überhaupt? Ich glaub' ja nicht ???:L (zumindest nicht "konsequent"))
 

0x7F800000

Top Contributor
Da die Frage damit vermutlich beantwortet ist, ein bißchen ""off""-Topic (lohnt sich dafür ein eigener Thread?). Was ist mit "Swing 2.0" - mit Generics? (GEHT das überhaupt? Ich glaub' ja nicht ???:L (zumindest nicht "konsequent"))
Es ist ja wohl nichts neues, dass ich solche Bestrebungen prinzipiell befürworte. Wieso das nicht möglich sein sollte ist mir erstmal unklar. Besser als so wie es jetzt ist geht es sicherlich: wenn dieses Swing-dingens nicht mehr mit Objects und Vector's (sogar ohne <>-Klammer^^) um sich werfen würde, und sich nicht von tonnen von integers ernähren würde, wären wohl einige hunderttausend leute glücklicher. So wirkt es überholt, verrostet und verstaubt, und mit der Zeit wird's nicht besser. :autsch:
 

Marco13

Top Contributor
Natürlich könnte mal, als einfaches, plakatives Beispiel, eine ComboBox machen wie
Code:
JComboBox<String> comboBox = new JComboBox<String>();
und dort dann ohne casten mit "getItem" direkt einen String rauskriegen. Aber die größte Schwierigkeit sehe ich bei Listenern - zumindest hatte ich mal versucht, in einem bestimmten Zusammenhang Listener und Generics zu kombinieren, und das endete in einem gezippten Ordner mit dem Namen [c]....(backup) 007 Listener may not be type safe - PERIOD - Get over it.zip[/c].

Bevor jetzt die Hinweise kommen, dass das "doch ganz einfach ist"...
Code:
class JComboBox<T> {
    void addListener(Listener<T> listener) {...}
}
interface Listener<T> {
    void changed(Event<T> event);
}
class Event<T> {
    T getItem() { ... }
}
ja, das ist es, im einfachsten Fall, und wenn man einige praktische Aspekte außer acht läßt. Irgendwie lief es eben darauf raus, dass man bei einem Event (der zur Laufzeit geworfen wird) einfach nicht mehr die nötigen Typinformationen mitbekommt - und spätestens bei event.getSource() geht sowieso nichts mehr. Notfalls kann ich nochmal versuchen, die Gründe kurz und präzise zusammenzufassen, aber ... so eine kurze Aussage ist zeitaufwändig...
 

0x7F800000

Top Contributor
[c]....(backup) 007 Listener may not be type safe - PERIOD - Get over it.zip[/c].
[...]
Notfalls kann ich nochmal versuchen, die Gründe kurz und präzise zusammenzufassen, aber ... so eine kurze Aussage ist zeitaufwändig...
Echt, so aussichtslos? :lol:
Nein, brauchst jetzt natürlich diese sinnlose Experimente nicht erneut aufzurollen, wenn du es nicht hinbekommen hast, dann ist es ein gutes Anzeichen dafür, dass das Problem nicht so trivial ist, wie es auf den ersten Blick erscheint, das glaube ich dir erstmal auch so. ;)
Wie es speziell bei den Listenern aussieht überlege ich mir etwas später nochmal, wenn ich mich wieder in swing eingelesen habe, bisher ist es in diesen Semesterferien nicht der Fall, bin eh ein wenig aus der Übung :oops:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Cast ohne Warnung bei Generics Java Basics - Anfänger-Themen 2
M Generics - "Unchecked cast"-Warnung wegbekommen Java Basics - Anfänger-Themen 4
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
R Warnung: Unable to resolve table 'users' Java Basics - Anfänger-Themen 10
R Warnung, wenn eine Variable eingegeben wird Java Basics - Anfänger-Themen 6
A Deadcode Warnung? Java Basics - Anfänger-Themen 4
S Warnung in Eclipse: unassigned closeable value Java Basics - Anfänger-Themen 20
Dit_ Compiler-Fehler Stringvariable ändern | Compiler warnung Java Basics - Anfänger-Themen 25
B Warnung : Dead Code. Aber wieso? Java Basics - Anfänger-Themen 10
A Variablen Type safety Warnung beseitigen Java Basics - Anfänger-Themen 3
T Liste Umformen ohne Warnung Java Basics - Anfänger-Themen 4
C Unchecked Call? Wie Warnung beseitigen? Java Basics - Anfänger-Themen 3
S "Unchecked Cast" Warnung Java Basics - Anfänger-Themen 3
G Warnung bei abgeleiteter Klasse Java Basics - Anfänger-Themen 2
T Warnung bei LinkedList Java Basics - Anfänger-Themen 8
H Generics machen mich verrückt Java Basics - Anfänger-Themen 8
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
MarvinsDepression Datentypen Generics: Erste Berührungen Java Basics - Anfänger-Themen 6
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
Cassy3 Generics - CompareTo Java Basics - Anfänger-Themen 21
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
districon Generics implementieren Java Basics - Anfänger-Themen 2
CptK Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Hilfe bei Generics Java Basics - Anfänger-Themen 11
G Generics Compilerfehler Java Basics - Anfänger-Themen 6
G Generics Methoden Java Basics - Anfänger-Themen 7
G Generics Java Basics - Anfänger-Themen 3
L Generics Tripel Java Basics - Anfänger-Themen 26
W Fragen zu Generics Java Basics - Anfänger-Themen 14
S Hilfe. Generics und BiFunctions Java Basics - Anfänger-Themen 10
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
I Java Generics factory method Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
I Generics und Comparable Java Basics - Anfänger-Themen 14
G Generics mit ? und Diamantoperator Java Basics - Anfänger-Themen 4
G Generics: Wildcard ? Java Basics - Anfänger-Themen 12
D Generics methode Java Basics - Anfänger-Themen 2
I Frage zu Generics und Wildcards Java Basics - Anfänger-Themen 2
N Generics und Casting eines Objekts Java Basics - Anfänger-Themen 1
A Generics Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
W Generics - Typ zurückbekommen Java Basics - Anfänger-Themen 4
Dimax Erste Schritte Generics von Profis leicht erklärt Java Basics - Anfänger-Themen 7
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
J Collections Generics: Typ wird nicht erkannt Java Basics - Anfänger-Themen 7
D Generics ArrayList: Bug im Quellcode Java Basics - Anfänger-Themen 14
C Generics Java Basics - Anfänger-Themen 8
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
T Generics in Java... Java Basics - Anfänger-Themen 9
J Generics Java Basics - Anfänger-Themen 3
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
V Generics / eigene Liste Java Basics - Anfänger-Themen 4
O Generics - Implementierung Java Basics - Anfänger-Themen 7
Shizmo Frage zu Generics Java Basics - Anfänger-Themen 3
F Multiple Generics Java Basics - Anfänger-Themen 10
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
H Typsicherheit/Generics Java Basics - Anfänger-Themen 1
U Java generics funktioniert nicht Java Basics - Anfänger-Themen 0
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Generics Java Basics - Anfänger-Themen 4
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
R Compiler-Fehler Generics Problem Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
K Generics bei Klassen- und Interfacedeklarationen Java Basics - Anfänger-Themen 3
D toArray und Generics Java Basics - Anfänger-Themen 2
D Zwei Generics beim Überladen von Methoden Java Basics - Anfänger-Themen 3
C Erste Schritte Filter für Generics oder ähnliches Java Basics - Anfänger-Themen 2
M Frage zu Generics-Deklaration Java Basics - Anfänger-Themen 5
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
J Java Generics - Frage zu Types Java Basics - Anfänger-Themen 2
M <T> Generics Java Basics - Anfänger-Themen 7
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
T Polymorphie Generics-Problem Java Basics - Anfänger-Themen 2
B Hilfe beim Verständnis zu Generics Java Basics - Anfänger-Themen 7
J Array Generics Java Basics - Anfänger-Themen 3
J Generics casten Java Basics - Anfänger-Themen 14
J Generics wildcard Java Basics - Anfänger-Themen 6
E Listen und Generics Java Basics - Anfänger-Themen 9
X Generics Java Basics - Anfänger-Themen 6
M Datei einlesen mit generics? Java Basics - Anfänger-Themen 9
D Warum sind Generics mit Vorsicht zu genießen? Java Basics - Anfänger-Themen 6
M OOP Mit Generics auf Methoden zugreifen? Java Basics - Anfänger-Themen 10
S Generics Java Basics - Anfänger-Themen 4
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
L Datentypen Problem mit Generics und null Java Basics - Anfänger-Themen 6
E Klassen java.util.ArrayList<E> als Generics Java Basics - Anfänger-Themen 16
W Interface Problem mit Generics Java Basics - Anfänger-Themen 2
M OOP Generics und Wildcards Java Basics - Anfänger-Themen 3
D Generics - Warnmeldungen Java Basics - Anfänger-Themen 2
M Polymorphie generics einsteigerprobleme Java Basics - Anfänger-Themen 3
D Vererbung Generics und Vererbung Java Basics - Anfänger-Themen 8
C Generics Array Java Basics - Anfänger-Themen 43
D Fehler mit generics Java Basics - Anfänger-Themen 10
S Generics - CaseInsensitiveMap selber schreiben? Java Basics - Anfänger-Themen 5
K Datentypen Generics Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben