Methoden Generische Methode für ArrayList

MerlinFlys

Mitglied
Hallo,

folgende Methode funktioniert wenn ich mit Integer arbeite. Sie soll aber generisch sein, da die übergebenen Objekte ebenfalls generisch sind.
Java:
public T[] getP() {
  ArrayList<T> p = new ArrayList<T>();
  getElements(rObjekt, p);
  int size = p.size();
  return p.toArray(new<T>[size]);
}

Die Methode getElements füllt die ArrayList mit den entsprechenden Werten. Die Methode getP() soll nun diese Werte in einer ArrayList zurückgeben.

Der Fehler erscheint im return Statement:
Syntax error, insert "ClassType ( )" to complete Expression

Wo liegt mein Denkfehler?

Danke.
Merlin
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Du weißt anscheinend nicht, dass Java type erasure betreibt und somit Generics nur ein Compilezeittrick ist.
Was gehen würde:
Java:
public T[] getP() {
  ArrayList<T> p = new ArrayList<T>();
  getElements(rObjekt, p);
  return (T[]) p.toArray();
}
Was ist zur Laufzeit verfügbar an Typinformationen:
Java:
public Object[] getP() {
  ArrayList p = new ArrayList();
  getElements(rObjekt, p);
  return (Object[]) p.toArray();
}
Was du aber machen könntest, damit das Typsicher ist:
Java:
public T[] getP(Class<T> clazz) {
  ArrayList<T> p = new ArrayList<T>();
  getElements(rObjekt, p);
  int size = p.size();
  return p.toArray((T[])Array.newInstance(clazz, size));
}
 

dzim

Top Contributor
Bei einer von der Klasse, die sie enthält, unabhängig generischen Methode muss diese den generischen Parameter festlegen und in etwa so aussehen:
Java:
@SuppressWarnings("unchecked")
private <T> T[] getP() {
    List<T> list = new ArrayList<>();
    getElements(rObjekt, p);
    return (T[]) list.toArray();
}
Das setzt jedoch voraus, dass auch die Methode #getElements generisch sein muss und "<T>" enthalten muss. Das Problem zieht sich also durch.
#getP ist übrigens IMHO ein blöder Name, weil er null Aussagekraft hat, was die Methode eigentlich macht.
Und #getElements suggeriert, dass eine Elementenliste zurückgegeben wird, was es nicht tut.

Insgesamt ist das eine etwas abstruse Architektur, die du hier vorschlägst und ich denke, so wie du es jetzt verwendest, wrappst du nur eine Methode in eine andere: Verwende einfach nur #getElements und gut ist.
Und in den meisten Fällen solltest du auch lieber mit dem List<T> Interface arbeiten, anstatt mit primitiven Arrays. Darin gibt es nur in Randfällen einen Gewinn (Performance, aber dann muss ALLES auf Arrays und primitive Datentypen ausgelegt sein und nicht von List zu Array zu List, und weiss der Kuckuck wie sonst noch, hin und her gecastet werden, denn dass ist eher eine teure Operation...).
 

MerlinFlys

Mitglied
vielen Dank für die Antworten ! :)
Ich habe jetzt für die Methode den Rückgabetyp ArrayList <T> definiert.

Nur kommt jetzt folgende Fehlermeldung:

"java.lang.IllegalArgumentException: wrong number of arguments"

Java:
public ArrayList <T>  getP ()
    {
         ArrayList <T> p = new ArrayList <T> ();
      
        getElements (rObjekt, p);
        return  p;
    }

die Methode getElements ist generisch angelegt.
 

MerlinFlys

Mitglied
Hab jetzt das Problem anders gelöst.
Ich hab sichergestellt, dass die eingelesenen Daten Integer Werte sind. Damit funktionierts. Die generische Methode wäre für den Fall der Fälle. Das ist jetzt ausgeschlossen.
vielen Dank euch ! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Methode für generische enummap/enum Allgemeine Java-Themen 10
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
C Generische Methode (Schablone) Allgemeine Java-Themen 8
S Generische Methode Allgemeine Java-Themen 13
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
F Verständnisprobleme Aufgabenstellung Aktionsobjekte und generische Listen Allgemeine Java-Themen 1
J Generische Interface - Problem Allgemeine Java-Themen 3
J Generische Interfaces mehrfach einbinden Allgemeine Java-Themen 11
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
T Interface mit generische Typen Allgemeine Java-Themen 5
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
H Interface Generische Schnittstelle (rekusiv) Allgemeine Java-Themen 2
C generische Authentifizierung Allgemeine Java-Themen 7
JCODA Generische Map Frage Allgemeine Java-Themen 10
H Generische Array Allgemeine Java-Themen 11
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
B Generische Datentypen MergeSort Allgemeine Java-Themen 5
M Generische Klassen Allgemeine Java-Themen 3
M generische Listener Allgemeine Java-Themen 2
S Generische Typen: Frage dazu Allgemeine Java-Themen 11
H generische Klasse Realtion Allgemeine Java-Themen 2
T Ideenfindung: Generische Transportklasse? Allgemeine Java-Themen 3
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
leifg Rechenoperationen auf generische Datentypen Allgemeine Java-Themen 10
B Generische Typen instanzieren Allgemeine Java-Themen 11
R Generische Listener und Sender Allgemeine Java-Themen 12
M Generische Datentypen Allgemeine Java-Themen 14
S Generische Liste Allgemeine Java-Themen 30
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
R Frage zu einfügen in generische lineare Liste Allgemeine Java-Themen 7
S Generische Methoden Allgemeine Java-Themen 7
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
R @author vor Methode (eclipse) Allgemeine Java-Themen 1
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
Y Java Bruttoberechnen + runden Methode Allgemeine Java-Themen 1
R Warum ist die Methode unendlich oft rekursiv? Allgemeine Java-Themen 5
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
S static methode im Interface Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Sinn einer toString Methode Allgemeine Java-Themen 3
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L ToString-Methode Allgemeine Java-Themen 6
X Datentypen NPE in längerer Methode Allgemeine Java-Themen 12
I Methoden Generics-Methode Allgemeine Java-Themen 3
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
F Variablen Palindromzahl (Probleme mit Methode) Allgemeine Java-Themen 9
B APi methode kurz anhalten Allgemeine Java-Themen 8
P Methode aus anderem Paket aufrufen Allgemeine Java-Themen 1
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
R Rekursive Methode Allgemeine Java-Themen 8
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
C Threads Methode verhält sich merkwürdig Allgemeine Java-Themen 18
R rekursive und iterative Methode Allgemeine Java-Themen 3
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72

Ähnliche Java Themen

Neue Themen


Oben