Trotz Generics Cast-Fehler!

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi!

Ich habe eine Klasse geschrieben, welche dank Generics zwei Arrays gleichen Typs- aber egal welchen Typs- zusammenführen kann. Leider funktioniert es jedoch noch nicht richtig, da ich einen Cast-Fehler bekomme.

Die Array-Zusammenführ-Klasse sieht so aus:

Code:
package voccoach;

public class ArrayJoiner<E> {
    
    public ArrayJoiner() {
	// do nothing
    }
    
     public E[] joinArray(E[] a, E[] b) {
	  E[] temp = (E[]) new Object[a.length+b.length];
	  System.arraycopy(a,0,temp,0,a.length);
	  System.arraycopy(b,0,temp,a.length,b.length);
	  return temp;
    }

}

Eine Anwendung sieht beispielsweise so aus:
Code:
private VocFile[] localVocFiles;
// [...]
localVocFiles = new ArrayJoiner<VocFile>().joinArray(local, arFiles.toArray(new VocFile[arFiles.size()]));
Dabei entsteht jedoch diese Fehlermeldung:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lvoccoach.VocFile;

Wenn ich jedoch versuche, ArrayJoiner mit einem VocFile-Array zu typisieren...
Code:
localVocFiles = new ArrayJoiner<VocFile[]>().joinArray(local, arFiles.toArray(new VocFile[arFiles.size()]));
...kommt eine andere Fehlermeldung:
joinArray(voccoach.VocFile[][],voccoach.VocFile[][]) in voccoach.ArrayJoiner<voccoach.VocFile[]> cannot be applied to (voccoach.VocFile[],voccoach.VocFile[]).

Außerdem sollte doch auch gar kein Object-Array zurückgegeben werden, wenn ich Generics verwende?!


Die Deklaration in joinArray kann ich aber ja nicht auf ein Nicht-Array ändern, da ich sonst nicht auf die length-Methode zugreifen kann.
Code:
public class ArrayJoiner<E[]> {
ist auch nicht möglich.

Auch ein nachträgliches Casten funktioniert nicht:
Code:
public E[] joinArray(Object[] a, Object[] b) {
	a = (E[]) a;
	b = (E[]) b;

Was kann ich tun?
 

SebiB90

Top Contributor
bin nicht ganz sicher
aber versuchs mal mit
Code:
E[] array = new E[a.length+b.length];
 
B

Beni

Gast
new Object[] funktioniert nicht, da ein Object[] nunmal kein E[] ist.
new E[] funktioniert nicht, da Generics zur Laufzeit nicht vorhanden sind.

-> such dir ein anderes Konzept.

Die Deklaration in joinArray kann ich aber ja nicht auf ein Nicht-Array ändern, da ich sonst nicht auf die length-Methode zugreifen kann.
Ein Array hat keine Methode "length", es hat ein Feld "length". Und Listen haben selbstverständlich was ähnliches: die Methode "size()". Aber Listen haben schon Methoden wie "addAll", die fast dasselbe machen wie du hier willst.
 

Marco13

Top Contributor
Abgesehen davon, dass das nach einer schönen utility-Funktion aussieht, die statisch sein könnte:
arFiles.toArray(new VocFile[arFiles.size()])
liefert erstmal ein Object[]. Gibt's irgendwelche "unchecked"-Warnungen? Sowas wie
localVocFiles = new ArrayJoiner<VocFile>().joinArray(local, (VocFile[])arFiles.toArray(new VocFile[arFiles.size()]));
schon getestet (sollte keinen Unterschied machen, aber nur aus Neugier....)
In welcher Zeile fliegt denn die Exception?
 
G

Guest

Gast
Abgesehen davon, dass das nach einer schönen utility-Funktion aussieht, die statisch sein könnte
Ja, aber ich brauche ja wenn dann Generics, welche ich ja nicht in einer statischen Klasse verwenden kann... .

Ja, es gibt unchecked-Warnungen (wie lass ich mir die in NB anzeigen?)

Dein Vorschlag funktioniert, wie du bereits erwartet hast, leider auch nicht.

Die Exception fliegt in der von dir veränderten Zeile.

Hmm blöd das :-/
 

Tobias

Top Contributor
Du kannst Generics auch in statische Methoden benutzen:

Code:
public static <T> void test(T t)

Aufruf mit

Code:
Klassenname.<String>test("Hallo");

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte Java 8 Tutorials trotz Java 13 Allgemeine Java-Themen 22
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
V Applet trotz Ausnahme blockiert Allgemeine Java-Themen 0
G Nullpointer trotz vorherigem Nullcheck Allgemeine Java-Themen 2
R Gleiche Objektreferenz trotz clone()? Allgemeine Java-Themen 12
D JSF Primefaces Chatproblem trotz 3.4 Allgemeine Java-Themen 13
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
T SecurityException trotz signierten JAR? Allgemeine Java-Themen 11
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
C Schleife mit leerem Anweisungsblock wird trotz erfüllter Bedingung nicht verlassen Allgemeine Java-Themen 9
B Input/Output Datei noch geöffnet trotz Close Allgemeine Java-Themen 4
M Webstart Exception trotz signierten JARs Allgemeine Java-Themen 3
U DLLs werden nicht gefunden trotz Pfad: Allgemeine Java-Themen 4
R java in der konsole nicht gefunden trotz jre,jdk,home und path Allgemeine Java-Themen 4
D Java Heap error trotz anpassungen mit -xmx Allgemeine Java-Themen 4
S Fenster "verschwindet" nicht, trotz setVisible(false); Allgemeine Java-Themen 22
M Radianwert wiederholt sich trotz unterschiedlicher zufälliger Koordinaten Allgemeine Java-Themen 6
P not enough space for object heap - Trotz mehr RAM? Allgemeine Java-Themen 6
J Wie die gleichzeitige Ausführung mehrerer Tasks trotz Multithreading verhindern? Allgemeine Java-Themen 2
B Trotz fat_jar NoClassDefFounError Allgemeine Java-Themen 4
H2SO3- Date "18.11.2002 20:02:33" trotz Locale.GERMAN nic Allgemeine Java-Themen 9
T Security-Exception trotz gegebener Rechte? Allgemeine Java-Themen 3
Saxony Blocked GUI trotz Thread(s) Allgemeine Java-Themen 2
G Leere Datei mit PrintWriter trotz flush und close Allgemeine Java-Themen 8
X Softwareverkauf trotz Lizens Allgemeine Java-Themen 5
R ConcurrentModificationException trotz synchronized? Allgemeine Java-Themen 12
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
P Trotz setModal, der JDialog ist nicht modal ? Allgemeine Java-Themen 18
A Kein finally ausführen trotz verlassen des try blocks? Allgemeine Java-Themen 14
G JFileChooser öffnet sich nicht im Browser ( trotz Signatur ) Allgemeine Java-Themen 10
R Bild wird trotz allem einfach nicht angezeigt. - AHHHHH!!!!! Allgemeine Java-Themen 30
M Bild wird trotz MediaTracker nicht oder nur halb gezeichnet Allgemeine Java-Themen 2
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
Zeppi Cast Object in Generics Allgemeine Java-Themen 4
P Generics und Arrays Allgemeine Java-Themen 6
M Generics / Typen Allgemeine Java-Themen 1
Kirby.exe InsertionSort mit Generics Allgemeine Java-Themen 33
Kirby.exe Vererbung bei Generics Allgemeine Java-Themen 7
H Klarnamen etc... (von Wie Generics lernen?) Allgemeine Java-Themen 26
D Wie Generics lernen? Allgemeine Java-Themen 26
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
W Vererbung Generics - mal wieder die verhaßte Rückwärtskompatibilität Allgemeine Java-Themen 2
S Verstaendnisfrage Generics Allgemeine Java-Themen 19
W Generics + Vererbung Allgemeine Java-Themen 47
I Methoden Generics-Methode Allgemeine Java-Themen 3
D Mit Generics arbeiten - Übungsaufgabe Allgemeine Java-Themen 3
K Factory Pattern: Mit Generics umgehen Allgemeine Java-Themen 6
G Generics Allgemeine Java-Themen 31
perlenfischer1984 Liste mit generics zurück liefern Allgemeine Java-Themen 8
Hacer Generics & Collections Allgemeine Java-Themen 8
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
C Gemeinsame Oberklasse zweier Generics Allgemeine Java-Themen 10
erdmann Datentypen Methodendeklaration mit Generics Allgemeine Java-Themen 2
Z Datentypen Verschachtelte Generics Allgemeine Java-Themen 1
Neumi5694 Datentypen Generics Allgemeine Java-Themen 5
S Mit Generics Klasse erstellen die selbst T erweitert..? Allgemeine Java-Themen 4
Tarrew Generics - Type erasure Allgemeine Java-Themen 5
N Problem mit Generics und Interface Allgemeine Java-Themen 4
H Generics als Parameter Allgemeine Java-Themen 1
kaoZ Generics und Vererbung Allgemeine Java-Themen 3
A Datentypen Generics: Wie am besten auf Typparameter zugreifen Allgemeine Java-Themen 2
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
vandread Kleine Generics Aufgabe aus einer Prüfung... wie ist das gemeint? Allgemeine Java-Themen 6
G Generics sind zu streng - oder ich zu naiv? Allgemeine Java-Themen 3
G Verschachtelte Generics Allgemeine Java-Themen 2
O Generics Allgemeine Java-Themen 42
M Problem mit Generics Allgemeine Java-Themen 10
M Generics (bounded wildcards statt Interface Bezeichnern) -- Sinn oder Unsinn? Allgemeine Java-Themen 2
darekkay Generics: Wildcard und Object Allgemeine Java-Themen 5
H Collections Generics und Reflection Allgemeine Java-Themen 6
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
H Problem mit Java Generics Allgemeine Java-Themen 6
J Generics: Typparameter als Klasse zurückliefern Allgemeine Java-Themen 4
H Generics Allgemeine Java-Themen 5
P Probleme mit Generics Allgemeine Java-Themen 5
B Generics und primitve arrays Allgemeine Java-Themen 6
M Generics Allgemeine Java-Themen 11
1 Collections Generics, internes Verhalten Allgemeine Java-Themen 16
T Warnungsfreie Verwendung von Generics Allgemeine Java-Themen 11
M Probleme mit Generics Allgemeine Java-Themen 5
D Java Generics Allgemeine Java-Themen 8
2 Generics: bounded wildcards Allgemeine Java-Themen 4
J Generics / vermeiden von downcasts Allgemeine Java-Themen 2
2 Generics oder nicht? Allgemeine Java-Themen 8
E Problem mit Generics und Comparable Allgemeine Java-Themen 16
W Erweitern einer Klasse mit Generics Allgemeine Java-Themen 8
H Generics für Methode Allgemeine Java-Themen 14
N Überladen mit Hilfe von Generics Allgemeine Java-Themen 3
S Generics: Fuer Set<T> ein T-Klassenobjekt erhalten? Allgemeine Java-Themen 3
Q Der innere Typ von Generics? Allgemeine Java-Themen 3
N Generics-NullpointerException Allgemeine Java-Themen 7
2 Generics - Typ Allgemeine Java-Themen 12
P Generics Problem Allgemeine Java-Themen 10
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
N Generics Allgemeine Java-Themen 3
V Frage zu Generics Allgemeine Java-Themen 2
S java generics klassen deklaration Allgemeine Java-Themen 7
B hashtable für unterschiedliche Typen - mit Generics Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben