Cast Object in Generics

Zeppi

Aktives Mitglied
Hallo, ich würde gerne ein Object in ein Generic casten, aber ich weiß nicht genau, wie man das umsetzt.
***Edit*** Man kann vielleicht in den Klassennamen <T> schreiben. Dann wird jedenfalls das T nicht mehr unterstrichen. Aber trotzdem sehe ich nicht, wie ich Object in T caste.
Methode:
private Object[] lebewesen = new Object[20];
//unwichtige Methoden

public void add(int i, T a) {
    lebewesen = addAnimal(a, i); // hier oder davor soll das Object Lebewesen in den Generic T gecastet werden. Ich weiß nicht, wo man es am Besten macht.
}
 
Zuletzt bearbeitet:

kneitzel

Top Contributor
Irgendwie verstehe ich nicht, was du genau meinst. Kannst du einmal im Detail aufzeigen, was du machen willst?

Ein Generic ist ein Platzhalter. In der generischen Klasse wird der so verwendet und da wird in der Regel nichts zu dem Generic gecastet. (Gibt ganz wenig Fälle, wo das notwendig ist, aber das sind dann meist unschöne Dinge, die man lieber vermeiden möchte.

Bei dir ist schon das Problem, dass du mit Object arbeitest. Da sollte es schon ein Array vom Typ T sein. Statt dem Array kannst du ggf. eine List / ArrayList verwenden oder wenn es zwingend ein Array sein muss: Klasse mit übergeben um das Array zu nutzen:
 

kneitzel

Top Contributor
Also das macht so noch nicht wirklich viel Sinn in meinen Augen.

Du kannst natürlich ein Object zu dem Generic casten (stark verkürzt):
Java:
public class GenericClass <T> {

    Object[] objects;

    public T getElement(int index) {
        return (T) objects[index];
    }
}

Das macht aber wenig Sinn. Wie immer bei solchen Casts fliegt es Dir um die Ohren und du hast keinerlei Typsicherheit!

Daher ist dann wichtig: Du hast in objects Elemente vom Typ T. Dann sieht das so in der Art aus:
Java:
public class GenericClass <T> {

    T[] objects;

    public T getElement(int index) {
        return objects[index];
    }
}

Hier hatte ich die Vermutung, dass Du sowas versucht hattest und dann halt das Problem hattest, dass Du kein T Array erzeugen kannst. Also etwas wie:
T[] objects = new T[10];
geht einfach nicht.

An der Stelle kommt dann der Link dazu, den ich gebracht habe, denn das Array erzeugt man nun etwas anders:
Java:
import java.lang.reflect.Array;

public class GenericClass <T> {

    T[] objects;

    public GenericClass(Class<T> clazz, int capacity) {
        objects = (T[]) Array.newInstance(clazz, capacity);
    }
    
    public T getElement(int index) {
        return objects[index];
    }
}

Und nutzbar wäre es per:
GenericClass<String> test = new GenericClass<>(String.class, 5);

Hier kann man sich überlegen, ob man die Klasse wirklich haben will / braucht. Es wäre auch denkbar, dass man etwas in der Art baut:
Java:
    public GenericClass(T... elements) {
        objects = elements;
    }
(Ist einfach eine Variante der Übergabe des Array, das gespeichert werden soll.)

Das wären ein paar Dinge, die man machen könnte ... Aber wo ich jetzt Dein Edit in #1 sehe:

Bitte versuch doch einfach einmal zu beschreiben, was Du genau machen willst! Was willst Du mit der Klasse machen? Und Dein Edit:
***Edit*** Man kann vielleicht in den Klassennamen <T> schreiben.
ist erst Recht verwirrend. Ein Generic ist ein Platzhalter und den musst Du definieren! Das kann an der Klasse oder in der Methode sein. Wenn Du das aber nicht machst, dann hast Du kein T. Dann gibt es das einfach nicht für den Compiler!
 

Zeppi

Aktives Mitglied
Also das macht so noch nicht wirklich viel Sinn in meinen Augen.

Du kannst natürlich ein Object zu dem Generic casten (stark verkürzt):
Java:
public class GenericClass <T> {

    Object[] objects;

    public T getElement(int index) {
        return (T) objects[index];
    }
}
Danke für die ausführliche Antwort. Das hat bei mir geklappt, so wie ich es haben wollte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
T cast Object to Double[] Allgemeine Java-Themen 2
G Object cast via Reflection Allgemeine Java-Themen 8
N Warning "The Cast from Object to" Allgemeine Java-Themen 9
D Cast schlägt fehl : Object[] zu Button[] Allgemeine Java-Themen 2
K Cast ohne neues Object zu erzeugen Allgemeine Java-Themen 12
Tarrew RMI Java RMI - com.sun.proxy.$Proxy1 cannot be cast to Funktionen Allgemeine Java-Themen 0
G Klassen Cast auf Argumentenklasse via Reflection? Allgemeine Java-Themen 10
M Harten Cast vermeiden Allgemeine Java-Themen 7
S Unchecked cast from Component to JComboBox<String> Allgemeine Java-Themen 3
P Reflection "Cast" Allgemeine Java-Themen 5
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
Z Cast von Long zu Integer funktionert nicht Allgemeine Java-Themen 3
N cast über string Allgemeine Java-Themen 24
C int zu byte cast - verständnis Allgemeine Java-Themen 3
E Heap und Comparable (warning: [unchecked] unchecked cast) Allgemeine Java-Themen 2
MQue cast DefaultMutableTreeNode Allgemeine Java-Themen 2
M Type-Cast Allgemeine Java-Themen 3
G Cast Allgemeine Java-Themen 4
O unchecked cast? Allgemeine Java-Themen 4
S instanceof liefert true, aber cast funktioniert nicht! Allgemeine Java-Themen 6
reibi Unchecked cast Allgemeine Java-Themen 1
G Trotz Generics Cast-Fehler! Allgemeine Java-Themen 5
R cast Integer[] zu int[] Allgemeine Java-Themen 2
G Cast von String zu Enumeration Allgemeine Java-Themen 2
Y unnecessary cast & Performance Allgemeine Java-Themen 29
B unchecked cast Error Allgemeine Java-Themen 2
D Cast Exeption Allgemeine Java-Themen 4
T JNI: jcharArray: warning: cast to pointer from integer of. Allgemeine Java-Themen 5
K Cast von Properties und Hashmap Allgemeine Java-Themen 9
E NumberFormatException bei cast auf double Allgemeine Java-Themen 5
H [unchecked] unchecked cast Problem Allgemeine Java-Themen 5
MoxxiManagarm Mapping into existing object Allgemeine Java-Themen 15
coolian Swing erstellt fillreckt immmer ein neues object Allgemeine Java-Themen 13
N Wo ist Object.class ? Allgemeine Java-Themen 0
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
N Gibt es etwas allgemeineres as Object? Allgemeine Java-Themen 16
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
B [Android] EditText-Object ist null - Nimmt nicht den Wert des enthaltenen Textfeldes ein Allgemeine Java-Themen 2
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
J Ist eine Instanz von einem bestimmten Object Typ? Allgemeine Java-Themen 6
L Sortieren von "Map<String, Object>" Allgemeine Java-Themen 2
G REST- Object darstellung Allgemeine Java-Themen 6
C Object.equals() liefert falschen Wert? Allgemeine Java-Themen 14
darekkay Generics: Wildcard und Object Allgemeine Java-Themen 5
O Socket Object wird scheinbar falsch empfangen Allgemeine Java-Themen 6
N Klasse/Object Eigenaufruf Allgemeine Java-Themen 5
G JNI Shared Object Allgemeine Java-Themen 10
B Variable class in java.lang.Object Allgemeine Java-Themen 11
S Klassen Zuorgnung Object-char Allgemeine Java-Themen 2
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
S Type mismatch: cannot convert from Object to float Allgemeine Java-Themen 3
A Input/Output Serialisierung und Object.hashCode() Allgemeine Java-Themen 3
M Jaxb und JPA: A cycle is detected in the object graph Allgemeine Java-Themen 5
H double dispatch und equals(Object) Allgemeine Java-Themen 6
J Datentypen Problem mit Date-Object Allgemeine Java-Themen 2
B Variablen Alle RenderingHints.Keys (KEY_*) in Array + alle RenderingHints.Keys (VALUE_*) in Object[] Allgemeine Java-Themen 8
J Verschiedene Klassen als "Object" in ArrayList und dann in for-Schleife erzeugen!? Allgemeine Java-Themen 2
L Object Instanz anhand eines Strings Allgemeine Java-Themen 10
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
DEvent embedded Object Database in Text Format Allgemeine Java-Themen 5
J Casting Problem Object, Double und String Allgemeine Java-Themen 3
M Object-Instanz in Date übersetzen Allgemeine Java-Themen 6
P Tree Object structure Allgemeine Java-Themen 19
G Object mit clone kopieren Allgemeine Java-Themen 21
J merkwürdig: Object Allgemeine Java-Themen 6
woezelmann Object nach Deserialisierung nicht mehr gleich Allgemeine Java-Themen 13
Iron Monkey Object in Datei effizienter lesen / schreiben Allgemeine Java-Themen 13
L Object = null? Allgemeine Java-Themen 16
dayaftereh Serializable und Object In/Out Stream Allgemeine Java-Themen 2
T Object auf Double, Int, String testen Allgemeine Java-Themen 5
N serialize deserialize java object über string Allgemeine Java-Themen 8
N getName() of reflection Object Allgemeine Java-Themen 4
B Probelm mit File Object Allgemeine Java-Themen 6
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
S Liste Object Löschen Allgemeine Java-Themen 7
P not enough space for object heap - Trotz mehr RAM? Allgemeine Java-Themen 6
MQue List<String> aus List<Object> generieren Allgemeine Java-Themen 2
M ArrayList<Object[]> und toArray() Allgemeine Java-Themen 5
Daniel_L LinkedList vom Typ Object-Array? Allgemeine Java-Themen 4
B Warum return type Object ? Allgemeine Java-Themen 4
D Generisches Object erstellen Allgemeine Java-Themen 2
M Databinding von Object zu properties-Datei Allgemeine Java-Themen 10
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
A NullPointer bei konvertierung von byteArr --> Object Allgemeine Java-Themen 3
foobar Object to byte[] ohne Serializable Allgemeine Java-Themen 6
reibi Object clonen spezial Allgemeine Java-Themen 8
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
X cannot convert from Object[] to Integer[] Allgemeine Java-Themen 2
G JSON Object auslesen Allgemeine Java-Themen 1
G Object. Wrapper Allgemeine Java-Themen 12
V Object durchsuchen Allgemeine Java-Themen 4
U eigene Datenstruktur ArrayList<String> nach Object [][ Allgemeine Java-Themen 2
T "Object o = new Object()" vs. "new Object()&q Allgemeine Java-Themen 8
T Object -> byte[] Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben