Попробуйте это.
List _events = [];
List _dates = [];
jsonParsed.keys.forEach((String key){
_dates.add(key);
});
for(int i=0; i<_dates.length; i++){
jsonParsed[_date[i]].forEach((event){
final Event event = Event(
title: jsonParsed['title'],
nbLike: jsonParsed['nbLike'],
);
_events.add(event);
});
}
Вы не можете. Java универсальные типы "стирается" компилятором, т.е. HashMap<String, String>
становится справедливым HashMap
во времени выполнения. Посмотрите этот вопрос.
Я действительно не понимаю цели того, что Вы пытаетесь сделать. У меня есть чувство, что должно быть возможно проверить что во время компиляции путем тщательной разработки иерархии классов. Но без большего количества деталей о проблеме Вы пытаетесь решить, я не могу помочь Вам.
Действительно, стирание типа есть, но оно не применяется к переменным / полям - только к определениям классов, где параметры типа стираются и заменяются их верхними границами.
Это означает, что то, о чем вы просите, может быть достигнуто. Вот как вы можете проверить общие параметры первого параметра метода:
class Z
{
public void f(List<String> lst) { }
}
...
Method m = Z.class.getMethod("f", List.class);
Type t = m.getGenericParameterTypes()[0];
if(t instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) t;
System.out.println("Generic params of first argument: " + Arrays.toString(pt.getActualTypeArguments()));
}
Как уже отмечалось, во время выполнения вы не можете просматривать общую часть типа.