Cannot create a generic array of T

mrbela

Bekanntes Mitglied
Hallo Leute!

Ich habe folgende Methode, die aber gar nicht so relevant ist.

Java:
    public <T> List<T> filter(int startPosition, Class<T> tClass) {
        
        List<T> list = new ArrayList<>();
 
        for (int i = startPosition; i < datas.size(); i++) {
            
            if (datas.get(i).getClass().isAssignableFrom(tClass)) {
                list.add((T) datas.get(i));
            } else {
                break;
            }
        }
        
        return list;
    }

Am Ende dieser Methode habe ich ein Objekte List<T> list. Dies würde ich allerdings gerne als Array haben!

Aber ein solcher Code:

Java:
T[] array = new T[list.size()];

spuckt die obige Fehlermeldung aus...

Gibts irgendwelche Ideen ob sich das lösen lässt?!

Bisher mache ich die Umwandlung in ein Array immer nach dem Aufruf der obigen methode, mit Hilfe von:

Java:
		List<Regionalklasse> rksList = filter(2, Regionalklasse.class);		
		Regionalklasse[] rks = new Regionalklasse[rksList.size()];
		rksList.toArray(rks);

oder z.b.:

Java:
		List<Unfall> unfallList = filter(2 + rksList.size(), Unfall.class);				
		Unfall[] unfaelle = new Unfall[unfallList.size()];
		unfallList.toArray(unfaelle);

Das produziert aber sehr viel Code, den man sich sparen könnte, wenn die Methode gleich Arrays zurückgeben könnte.


Vielen Dank für die Hilfe!!
 

mrbela

Bekanntes Mitglied
Also muss ich, wie unten beschrieben jede ArrayList "per Hand" in ein Array umbauen?!

Verstehe aber nicht ganz, wieso man ArrayLists generisch erstellen kann, nicht aber Arrays...
 
N

nillehammer

Gast
Es gibt eine Lösung, die auch wieder das Klassenobjekt hernimmt, um die Type Erasure zu umgehen:
Java:
T[] array = (T[]) Array.newInstance(tClass, list.size());
[EDIT]Ach guck! Hab grad gesehen, dass die o.g. Lösung auch in dem von Marcinek verlinkten Insel-Kapitel geschildert wird.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Warum muß es ein Array sein? Arrays und Generics beißen sich. Und unter dem Aspekt der Typsicherheit gibt es mittlerweile keinen ernsthaften Grund, in neuen Programmen noch Arrays zu verwenden. Eine Ausnahme ist lediglich die Programmierung gegen veraltete Legacy-APIs mit Arrays in Schnittstellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
D Selenium - cannot find Chrome binary Allgemeine Java-Themen 6
bueseb84 Java : Cannot find Symbol Allgemeine Java-Themen 7
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
C Compiler-Fehler Cannot find symbol bei Hat-Beziehungen Allgemeine Java-Themen 5
Tarrew RMI Java RMI - com.sun.proxy.$Proxy1 cannot be cast to Funktionen Allgemeine Java-Themen 0
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
R Char cannot be derefenrenced? Allgemeine Java-Themen 14
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
127.0.0.1 Methodenaufruf -cannot find symbol- Allgemeine Java-Themen 14
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
S Type mismatch: cannot convert from Object to float Allgemeine Java-Themen 3
B Cannot find main-claas... Allgemeine Java-Themen 21
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
K + cannot be applied Allgemeine Java-Themen 15
Tobse Cannot find symbol : construktor --- Deklariert! Allgemeine Java-Themen 9
D 'InputStreamReader' & 'BufferedReader' führen zu "cannot find symbol"-Fehler Allgemeine Java-Themen 3
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
B cannot find Symbol Allgemeine Java-Themen 2
K java.io.IOException: Cannot validate certificate for jogl.dll Allgemeine Java-Themen 6
Saxony assert cannot be resolved Allgemeine Java-Themen 5
? Cannot run program + Vista Allgemeine Java-Themen 8
X cannot convert from Object[] to Integer[] Allgemeine Java-Themen 2
B aus java heraus kompillierte Klassen - cannot be resolved Allgemeine Java-Themen 3
G [quote]the type HashMap is not generic; it cannot be paramet Allgemeine Java-Themen 4
R cannot be referenced! Allgemeine Java-Themen 18
R Cannot be referenced. Allgemeine Java-Themen 7
G Kompiler Fehler: cannot resolve symbol: class Allgemeine Java-Themen 4
7 Cannot resolve Symbol keyPressed Allgemeine Java-Themen 3
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
A Fehlermeldung: cannot be resolved Allgemeine Java-Themen 5
G warum operator || cannot be applied to int, double Allgemeine Java-Themen 11
D Probleme mit 'cannot execute runjava.bat' Allgemeine Java-Themen 2
G Fehlermeldung "cannot resolve symbol" Allgemeine Java-Themen 7
V Cannot resolve symbol Allgemeine Java-Themen 7
berserkerdq2 How can I use a 4 bit adder and 4 bit identity to create a 4 bit multiplier that multiplies two 4 bit numbers? Allgemeine Java-Themen 45
V Scheinbar zufällig hin und wieder: Can't create an ImageOutputStream! Allgemeine Java-Themen 8
F Create Befehl mit variierender Spaltenanzahl/Spaltenname Allgemeine Java-Themen 5
W JavaCC to create my only syntax Allgemeine Java-Themen 5
J Post: #1could not create the java virtual machine etc Allgemeine Java-Themen 6
S could not create the java virtual machine Allgemeine Java-Themen 3
F ImageIO cant create InputStream Allgemeine Java-Themen 9
K Could not create the Java Virtual Machine Allgemeine Java-Themen 1
T Wie lookup-and-create-on-demand umsetzen? Allgemeine Java-Themen 6
M unable to create new native thread Allgemeine Java-Themen 6
D unable to create new native thread Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
Rakshan Generic reading of XML document from the root tag into an Collection Allgemeine Java-Themen 0
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
Neumi5694 Datentypen Generic mit parameterlosem Konstructor Allgemeine Java-Themen 4
C Generic collections und static typing Allgemeine Java-Themen 4
K Generic class und Reflection Allgemeine Java-Themen 2
K Saubere Verwendung von Generic Types Allgemeine Java-Themen 7
T Generic Allgemeine Java-Themen 1
C Generic-Funktion nur bei bestimmten Typen erlauben Allgemeine Java-Themen 6
N Generic extends Generic Allgemeine Java-Themen 5
TheWhiteShadow Generic Bug? Allgemeine Java-Themen 19
P Generic zur Laufzeit Allgemeine Java-Themen 4
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
S Reflection und Generic Allgemeine Java-Themen 9
G Klasse eines Generic Allgemeine Java-Themen 6
J Generic von einer ArrayList/HashMap bekommen Allgemeine Java-Themen 7
G Generic merhfach Angabe Allgemeine Java-Themen 8
Dragonfire Generic Typ zur Laufzeit Allgemeine Java-Themen 9
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
N generic reflection Allgemeine Java-Themen 5
thE_29 Generic Methoden die sich aufrufen wollen nicht immer Allgemeine Java-Themen 12
A Generic-Problem. was meint ihr dazu? Allgemeine Java-Themen 4
G unbekanntes Generic Allgemeine Java-Themen 12
K Bound mismatch: The generic method sort(List<T>) of ty Allgemeine Java-Themen 4
V ArrayList ist nicht generic!?? Oder bin ich blöd? Allgemeine Java-Themen 2
C Generic Type ermitteln Allgemeine Java-Themen 3
H References to generic type Test.A<typ> should be param Allgemeine Java-Themen 5
byte Generic Type einer List zur Laufzeit rausfinden? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben