Я пытаюсь создать объект List (ну, на самом деле, несколько), не зная заранее о его типе, и передав функции, я хочу создать эти списки с параметром типа Class<?>
, поэтому для примера он работает файл, если я возвращаю tickr1, но когда я пытаюсь создать второй список и добавить все элементы этого второго списка, он жалуется:
method java.util.Collection.addAll(java.util.Collection<? extends capture#2 of ?>) is not applicable
Есть ли способ создать список в любом случае похож на
List<clazz.clazz.getTypeName()> tickr1 ...
В конце я использовал List и получил желаемые результаты, но есть ли лучший способ?
public class Crawler {
private List<?> metacrawler(String level1, String level2, Class<?> clazz, String resource) throws IOException {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
Reader inr = new InputStreamReader(in);
String json = CharStreams.toString(inr);
Object glue = JsonPath.read(json, "$."+level1+"[*]."+level2);
ObjectMapper om = new ObjectMapper();
List<?> tickr = om.readValue(glue.toString(),
om.getTypeFactory().constructCollectionType(List.class, clazz));
List<?> tickr2 = om.readValue(glue.toString(),
om.getTypeFactory().constructCollectionType(List.class, clazz));
tickr.addAll(tickr2);
return tickr;
}
public List<ObjectType1> getObjectsOfType1() throws IOException {
return (List<ObjectType1>)metacrawler("firstlevel", "secondlevel", ObjectType1.class, "1.json");
}
}