generische Arrays ??
-
moinsen,
ich bin grad auf ein lustiges Problem gestoßen: Arrays von generischen Klassen.
Ich hab n bischen rumprobiert, was denn so alles Netbeans annimmt, bis ich irgendwann im Netz rausgefunden habe, dass Arrays von gerischen Klassen nicht funktionieren.
Aber ich wundere mich, dass zum Beispiel folgender Code funktioniert, wenn man einfach hin und wieder die generischen Informationen weglässt:public class Klasse <T> { public T a; public Klasse(T a) { this.a=a; } } public class Test { public static void main(String args[]) { Klasse <String> arr[]=new Klasse [10]; arr[0]=new Klasse("Hallo"); System.out.println(arr[0].a); } }
Das einzige ist ne Warnung, dass man unsichere Funktionen nutzt.
Ich mein, man könnte einfach Listen nutzen, aber ich wollt einfach diese Sache mal in die Runde werfen und mal schaun, was ihr so dazu sagt
Denn meiner Meinung sollte der Code wie folgt aussehen:public class Test { public static void main(String args[]) { Klasse <String> arr[]=new Klasse <String> [10]; arr[0]=new Klasse <String>("Hallo"); System.out.println(arr[0].a); } }
aber Java meckert natürlich, weil es ja eigentlich nicht vorgesehen ist.
Viel Spaß damit !heimschmiede
-
Da Generics zur Laufzeit nicht bekannt sind, ist sowas wie "new Klasse<X>[ 123 ]" nicht möglich. Der Code "Klasse<X>[] array = new Klasse[ 123 ]" ist da IMHO die einzige Möglichkeit ein Array zu kriegen (allenfalls noch ein Pseudo-Cast auf "Klasse<X>[]" machen).
Hingegen ist ein "T[] array = new Object[ 123 ]" garantiert falsch (bzw, gibt später tolle Exceptions).