Функция toJson GSON принимает аргумент типа, который проверяет Type при отражении объекта. Это полезно для отображения объектов в коллекцию.Простой код для получения java.lang.reflect.Type
Однако, единственный способ, которым я могу найти, чтобы получить Типа через уродливый набор кодирование судорог:
//used for reflection only
@SuppressWarnings("unused")
private static final List<MyObject> EMPTY_MY_OBJECT = null;
private static final Type MY_OBJECT_TYPE;
static {
try {
MY_OBJECT_TYPE = MyClass.class.getDeclaredField("EMPTY_MY_OBJECT").getGenericType();
} catch (Exception e) {
...
}
}
private List<MyObject> readFromDisk() {
try {
String string = FileUtils.readFileToString(new File(JSON_FILE_NAME), null);
return new Gson().fromJson(string, MY_OBJECT_TYPE);
} catch (Exception e) {
...
}
}
есть способ инициализации типа без привязки переменных внутреннего класса? Псевдокод будет выглядеть примерно так:
private static final Type MY_OBJECT_TYPE = TypeUtils.generate(List.class, MyObject.class);
Вы пробовали написать свой метод с помощью интерфейса, на который вы смотрите, и столкнуться с проблемой? – Krease
@Chris Извините, я не понимаю ваш вопрос. – patstuart
@patstuart javadoc для 'toJson' выглядит так, как будто они могут ответить на ваш вопрос. 'Тип typeOfSrc = new TypeToken <Список>() {}. GetType();' –
Danny