Generisches Feld in nicht-generischer Klasse möglich?

TSH

Bekanntes Mitglied
Hallo,

ich möchte gerne eine Map realisieren, die beliebige Werte abspeichern kann. Allerdings sollen Schlüssel und Wert immer vom gleichen Typ sein, also so etwas:

Code:
public class MyClass {
 
  private Map<T, T> myMap = new HashMap<T, T>>();
 
  public T get(T key) {
    return myMap.get(key);
  }
 
}
In dieser Form meckert mein Compiler. Kann mir jemand sagen, ob eine derartige Konstruktion über Umwege möglich ist?
 
du musst doch der Klasse elbst auch sagen, welcher Datentyp sich hinter T verbirgt... Probier folgendes:
Java:
class MyClass<T> {...}

sonst weiß doch keiner (v.a. nicht die Klasse), was für Werte sie überhauot speichern soll

EDIT: Ups, hab das "nicht-generische Klasse" überlesen... IGNORE POST
 
Zuletzt bearbeitet:
Du kannst eine generische Methode schreiben. Dann muss die Klasse nicht generisch sein:

Java:
public static <T> T getMapValue(Map<T,T> map, T key){
      return map.get(key);
}

Edit: Hm, hab ich wohl falsch verstanden. Aber weil du ja explizit gefordert hast dass die Klasse nicht-generisch sein soll.. Hat das n Grund? Wenn nicht dann ist die Lösung natürlich das was mein Vorredner sagte.
 
syntaktisch geht
Java:
class MyClass {
    private Map myMap = new HashMap();

    public <T> T get(T key)  {
        return (T) myMap.get(key);
    }
}
 
@Slater Lustig, ich hab grad erst vor ein paar Tagen ein krasses Java Puzzle zu Generics gesehen. Wenn du jetzt noch die Klasse generisch machst, und ne Instanz ohne Angabe eines Typen erzeugst, dann glaube ich - sofern ich nichts verwechsle und mich richtig erinnere - dass dir da alles um die Ohren fliegt.

Ich kann's mal rauskramen, mom..
 

Neue Themen


Zurück
Oben