Datentypen <T>

Diskutiere <T> im Allgemeine Java-Themen Forum; Also jungs Ich habe ne Klasse, die sieht wie folgt aus: public class Klasse_<T> { public T value; public Klasse_(String cfgKey, T value) {...

  1. EinsteigerxD
    EinsteigerxD Neues Mitglied
    Also jungs
    Ich habe ne Klasse, die sieht wie folgt aus:
    Code (Text):

    public class Klasse_<T> {
    public T value;
    public Klasse_(String cfgKey, T value) {
                if (value instanceof Integer) {
                    value = (T) ConfigUtils.getInt(cfgKey);
    }
    }
    }
     
    Problem ist folgendes: Cannot cast from int to T

    Ich würde gerne, dass value den Wert aus der Config annimmt, allerdings tritt dabei dieser Fehler auf.
    Habe schon im Internetz gesucht, aber bin nicht fündig geworden.

    Kann mir wer helfen/Tipps geben?
     
  2. Wenn du jetzt Java lernen möchtest, dann sichere dir hier unseren Java-Videokurs heute zum Sonderpreis (hier klicken!)
  3. Barista
    Barista Mitglied
    T bedeutet, dass eine Instanz von Klasse_ (kann auch eine erbende Klasse sein) einem bestimmten Typ hat.

    Was willst Du eigentlich machen?

    Wenn es eine Oberklasse für Konfigurationswerte sein soll, dann vererbe:

    Code (Java):

    public class IntegerKlasse extends Klasse_<Integer> {
    }
     
    In dieser Klasse kannst Du Deinen Konstruktor auf int (wird geboxt zu Integer) schreiben.
     
  4. EinsteigerxD
    EinsteigerxD Neues Mitglied
    Ich möchte in dieser Klasse jeden Datentypen nutzen können, auch boolean oder Float.
    Muss ich also für jeden Datentyp eine eigene Klasse erstellen oder geht das alles in einer Klasse?
     
  5. White_Fox
    White_Fox Mitglied
    Naja, du könntest ja <Object> nehmen. Dann geht wirklich alles...
     
  6. EinsteigerxD
    EinsteigerxD Neues Mitglied
    Meine IDE sagt folgendes: Cannot cast from int to Object
     
  7. JuKu
    JuKu Aktives Mitglied
    Es gibt in Java 2 Arten von Datentypen:
    • Primitive Datentypen (int, char, usw.)
    • Objekte
    int ist kein Objekt und kann somit auch nicht auf ein Objekt gecastet werden!
    Dafür besitzt Java aber ebenfalls eine Lösung, nämlich indem man Integer statt int verwendet, dann wird es als Objekt behandelt.
     
  8. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    In deinem obigen Code löst du das btw, wenn du auf Integer statt auf T castest.
     
Passende Stellenanzeigen aus deiner Region:





Thema: <T>