Предположим, у меня есть суперкласс Entity
и некоторые подклассы Creature
, Heroes
и т. Д. У меня есть все данные для подклассов в файлах JSON, которые содержат массивы, которые представляют каждый подкласс, например, файл json/creatures/a.json
представляетвсе существа типа А. Я анализирую файлы с помощью gson.Вот как может выглядеть файл примера:
[
{
"name": "Pikeman",
"attack": 4,
"defence": 5,
// ...
},
{
"name": "Halberdier",
"attack": 6,
"defence": 5,
}
]
Теперь я подумал, что мог бы создать метод в Entity, который анализирует данный файл JSON и возвращает экземпляр одного из подклассов Entity с данными, которые он анализировал.,Если бы файл содержал только одну сущность, я мог бы сделать что-то вроде
public static Entity parseFromJson(File file, Class<? extends Entity> c) {
return gson.fromJson(new FileReader(file), c);
}
Но теперь это усложняется: файлы содержат массивы подклассов.Должен ли я передать Class<? extends Entity[]>
и сделать вместо этого возвращаемый тип Entity []?Если так, то где и как я должен получить доступ к одному элементу этого массива?Или мне лучше иметь только одно существо на файл и вместо этого отправить имя в виде строки?