Возможно, название написано плохо, и кто-то с большими знаниями мог бы его отредактировать.
Я хочу создать метод parseFromJSONMap
, который анализирует JSON-файл, используя gson, и возвращает данные в виде карты, в частности, Map<String, T>
, где T является подклассом для класса с именем Entity
. На данный момент определены два подкласса, Creature
и Hero
, но могут быть и другие. Так что, если я позвоню
parseFromJSONMap(file, Creature.class)
он должен вернуть Map<String, Creature>
, и если я позвоню
parseFromJSONMap(file, Hero.class)
Должен вернуть Map<String, Hero>
и т. Д.
Вот как теперь выглядит метод (он работает только для Существ):
public static <T extends Entity> Map<String, T> parseFromJSONMap(File file, Class<T> clazz) throws FileNotFoundException
{
Type type = new TypeToken<HashMap<String, Creature>>(){}.getType();
return gson.fromJson(new FileReader(file), type);
}
Так что вместо Creature
я хочу поставить T
. Если я сделаю это и назову это так
Map<String, Creature> test = Entity.parseFromJSONMap(somefile, Creature.class);
Я получаю java.lang.Object cannot be cast to heroes.model.Creature
Возможно ли то, что я хочу?
Редактировать: Исключение возникает, когда я вызываю любой метод на test
, например test.get("someCreature")
, так что это исключение времени выполнения.