Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
01.04.11, 16:38
|
#1
|
Erfahrener Newbie
Registriert seit: Apr 2010
Beiträge: 142
Bedankt: 140
|
[Java] Generisches Array wie erstellen?
Ich habe eine Methodensignatur fest vorgegeben, der letze Teil ist:
....(T[] array) {
Nur wie erstelle ich sp ein T[] array, das ich überegeben kann?
Z.b. mit Integern gefüllt, aber T[] test = {new Integer(1), new Integer(2)} klappt ja nicht...
Ich habe schon alles durchprobiert und überall gesucht, aber nichts funktioniert.
|
|
|
01.04.11, 18:16
|
#2
|
Anfänger
Registriert seit: Dec 2010
Beiträge: 24
Bedankt: 83
|
// Edit: Sry das Forum spackte mal wieder =)
__________________
Zitat:
Bedanken tut niemandem weh.
|
|
|
|
01.04.11, 18:16
|
#3
|
Anfänger
Registriert seit: Dec 2010
Beiträge: 24
Bedankt: 83
|
Vll versuchst es mal mit z.B. :
Object[] testArray = new Object[<anzahl deiner Objekte>];
testArray[0] = "Bla text";
testArray[1] = new Integer(-10);
__________________
Zitat:
Bedanken tut niemandem weh.
|
|
|
|
01.04.11, 19:19
|
#4
|
Erfahrener Newbie
Registriert seit: Apr 2010
Beiträge: 142
Bedankt: 140
|
Danke, aber geht leider nicht...
Es heißt, das der Typ T[] sein muss und nicht Object[].
Das Array muesste von dieser Methode angenommen werden.
Minimalbespiel:
public static boolean myMethod(T[] array) {
//code
}
|
|
|
01.04.11, 20:00
|
#5
|
Newbie
Registriert seit: Dec 2008
Beiträge: 45
Bedankt: 19
|
Soweit ich weiß ist es nicht möglich ein generisches Array in Java zu erstellen.
Was möglich wäre wäre z.b. ein Vector oder eine List die du dann typisierst.
Das wäre das einzige was mir so spontan einfällt.
|
|
|
01.04.11, 20:14
|
#6
|
Anfänger
Registriert seit: Dec 2010
Beiträge: 24
Bedankt: 83
|
Willst du einen genauen Typ haben (Wenn ja welchen?) oder soll die Methode mit jedem Typ (außgenommen Grundtypen) umgehen können?
__________________
Zitat:
Bedanken tut niemandem weh.
|
|
|
|
01.04.11, 20:22
|
#7
|
Newbie
Registriert seit: Dec 2008
Beiträge: 45
Bedankt: 19
|
@ fumding Hab gerade mal in meinen Büchern nachgeschaut dein Ansatz war volkommen richtig:
Generische Klassen
Die Idee für generische Typen ist, eine Klasse zu schreiben, die für verschiedene Typen als Inhalt zu benutzen ist. Das geht bisher in Java, allerdings mit einem kleinen Nachteil. Versuchen wir einmal, in traditionellem Java eine Klasse zu schreiben, in der wir beliebige Objekte speichern können. Um beliebige Objekte speichern zu können, brauchen wir ein Feld, in dem Objekte jeden Typs gespeichert werden können. Dieses Feld muß daher den Typ Object erhalten
/Edit:
Ich verlink noch mal auf die Quelle zum selber nachlesen:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
|
|
01.04.11, 21:39
|
#8
|
Erfahrener Newbie
Registriert seit: Apr 2010
Beiträge: 142
Bedankt: 140
|
Die Aufgabenstellung ist nur:
Methodensignatur, darf nicht verändert werden:
Code:
public static <T extends Comparable<T>> List<T>sortMe(T[] array)
Damit ist sichergestellt, dass die Elemente des Arrays das Interface Comparable<T> implementieren. Die Elemente
des uebergebenen Arrays sollen sortiert in einer selbst geschriebenen Liste zurueckgegeben werden.
Das Sortieren und die Liste habe ich schon.
Alle möglichen Typen, die Comparable sind, sollten für T möglich sein.
Werde mir dann mal den verlinkten Blog durchlesen.
|
|
|
03.04.11, 13:11
|
#9
|
Erfahrener Newbie
Registriert seit: Apr 2010
Beiträge: 142
Bedankt: 140
|
Danke, genau das ist es
Das geht super:
// Eingebaute Klassen welche bereits Comparable implementieren
Integer[] numbers = new Integer[10];
numbers[0] = new Integer(5);
...
List<Integer> sortedNumbers = Foo.sortMe(numbers);
Ich hatte es immer so probiert:
int[] test = new int[5];
test[0] = new Integer(1);
Aber mit dem Wrapper gleich beim Typ des Arrays geht es
Gibt es Debugger für java Bytecode, in etwa so wie OllyDBG für exe / dll?
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.
().
|