Generics?
-
Hallo,
ich habe folgendes Problem:private <T> T ausgabe(T[][] arg){ for(..) for(..) ...gebe alle Elemente wieder... } public static void main(String[] args{ int[][] abc = ...; float [][] xyz = ...; new blabla().ausgabe(abc); //das funktionert nicht, wie kann es funktionieren? new blabla().ausgabe(xyz); //das funktionert nicht, wie kann es funktionieren? }
Wie könnte es funktionieren? DANKE.
-
hi,
T muss vom Typ Object sein, also kannst du da kein int oder float-Array als Parameter übergeben. Musst die halt dann nen Integer-Array und Float-Array basteln (Warpperklassen, siehe java.lang). Mittels autoboxing lässt sich das au ganz prima initialisieren, das Array.
-
int[] und float[] sind auch Objects...
... das kann nur nicht funktinoieren, weil es keine generischen arrays gibt. im übrigens gibs für array ausgabe auch schon methoden in java.util.Arrays
-
Danke LeGaN, warum bin ich nicht früher darauf gekommen.
@Der gewünschte Benutzerna: Was meinst du?
-
wie was ich meine? steht doch da. dein code funktioniert gleich doppelt nicht.
also erst mal hat legan unrecht, weil int[] und float[]sehr wohl Objects sind aber zu deinem code:int[][] abc
=> ausgabe(abc)beim aufruf wird für T der typ int[][] eingesetzt, also wird als parameter ein int[][][][] erwartet du gibst ihm nur ein int[][] also kann das nicht kompilieren.
und zweitens geht es nicht, selbst wenn problem 1 nicht bestünde (mit ausgabe(T array) weil es keine generischen arrays gibt
-
Hi,
klar ist int[][] ein Object, aber T soll ein Object sein und ein int ist nun mal kein Object, nur int[] bzw. int[][]...
-
private <T> T ausgabe(T[][] arg){ for(..) for(..) ...gebe alle Elemente wieder... } public static void main(String[] args{ Integer[][] abc = ...; Float[][] xyz = ...; new blabla().ausgabe(abc); new blabla().ausgabe(xyz); }
Funktioniert!