myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Java] Generisches Array wie erstellen? (https://mygully.com/showthread.php?t=2270617)

7331 01.04.11 16:38

[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.

fumding 01.04.11 18:16

Vll versuchst es mal mit z.B. :

Object[] testArray = new Object[<anzahl deiner Objekte>];
testArray[0] = "Bla text";
testArray[1] = new Integer(-10);

fumding 01.04.11 18:16

// Edit: Sry das Forum spackte mal wieder =)

7331 01.04.11 19:19

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
}

Belenus666 01.04.11 20:00

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.

fumding 01.04.11 20:14

Willst du einen genauen Typ haben (Wenn ja welchen?) oder soll die Methode mit jedem Typ (außgenommen Grundtypen) umgehen können?

Belenus666 01.04.11 20:22

@ 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 und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

7331 01.04.11 21:39

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.

7331 03.04.11 13:11

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.