Klassen LibGDX - Verschiedene Klassen als Value in einer Map

Moin Leute,
ich habe eine frage. In einem Spiel entwickelt mit LibGDX will ich items leichter aufrufen können somit erstelle ich in einer klasse Items auch als Klassen. Diese will ich in einer Map speichern damit ich sie wie oben schon gesagt habe leichter(mit einem String) aufrufen kann.
Code:
public class Items {
    public static Map<String, Class<?>> m = new HashMap<String, Class<?>>();

    public Items(){
        m.put("Wood", Wood.class);
    }

    public static class Wood extends Sprite{
        public static String name = "Wood";
    }
    public static class Stone extends Sprite{
        public static String name = "Stone";
    }
}

So funktioniert es nicht da ich nicht auf den Namen zugreifen kann.
Würd mich über (schnelle) Antworten freuen.

Markus
 
ne hab in ner anderen klasse also nicht in der items klasse eine for schleife durchlaufen lassen und abgefragt ob ein string als key in der map ist und wenn ja wollte ich z.B. das sprite der klasse in items holen um das zu zeichnen.
Code:
class InvPlaces {
        float x;
        float y;
        float width;
        float height;
        String Item;
        InvPlaces(float x, float y, String Item, float width, float height){
            this.x = x;
            this.y = y;
            this.Item = Item;
            this.height = height;
            this.width = width;
            for (int i = 0; i < is.m.size(); i++){
                if (is.m.containsKey(Item)){
                    ConsoleOutput.DataOutput(Item + " yes ");
                    is.m.get(i).getSprite();
                }
            }
        }
    }
Das .getSprite(); habe ich selber eingefügt es wird als fehler erkannt...

Markus
 
Also ich habe ein Inventar indem ich items haben will. Die items will ich in einer anderen klasse(hier Items) geordneter haben. Diese will ich durch eine Map(siehe oben) in der Inventar klasse mir rausholen um sie zu "malen". Das Problem: die Items sind in verschiedenen Klassen so das ich nicht einfach sagen kann Map<String, Wood> weil wenn ich dann ein neues item(oben Stein) hinzufügen will es einen fehler gibt weil die map nur wood akzeptiert.

Markus
 
Gib dem Items eine gemeinsame Oberklasse oder ein gemeinsames Interface und map die Strings zu der Oberklasse/Interface
Java:
 Map<String, Sprite> map =new HashMap<>() ;
 

Neue Themen


Zurück
Oben