douglarek
03/15/2017, 9:19 AMclass A<T> {
public <E> E get(Class<E> klass, String key) {
return (E) (new Object()); // just for demo
}
public static void main(String[] args) {
A a = new A<>();
a.get(List.class,"a");
}
alband
03/15/2017, 9:44 AMalband
03/15/2017, 9:46 AMalband
03/15/2017, 9:46 AMdouglarek
03/15/2017, 9:47 AMdouglarek
03/15/2017, 9:48 AMAndreas Sinz
03/15/2017, 9:48 AMalband
03/15/2017, 9:48 AMdouglarek
03/15/2017, 9:49 AMget
method, although A's generic type is <T>douglarek
03/15/2017, 9:50 AMalband
03/15/2017, 9:51 AMalband
03/15/2017, 9:51 AME super T
.... but yeah this has nothing to do here, on kotlinlang slackdouglarek
03/15/2017, 9:52 AMa.get(List.class,"a");
will return java.lang.Object
just not java.util.List
when instances A as a raw typeAndreas Sinz
03/15/2017, 9:53 AMdouglarek
03/15/2017, 9:54 AMalband
03/15/2017, 9:55 AMdouglarek
03/15/2017, 9:59 AMpublic class Response<T> {
private Map<String, Object> data = new HashMap<>();
public <E> E getDataEntryAs(Class<E> type, String key) {
Object o = data.get(key);
if (o == null) {
return null;
}
ObjectMapper m = new ObjectMapper();
return m.convertValue(o, type);
}
}
Andreas Sinz
03/15/2017, 10:00 AMdouglarek
03/15/2017, 10:03 AMResponse response = new Response();
response.getDataEntryAs(String.class,"");
douglarek
03/15/2017, 10:03 AMresponse.getDataEntryAs(String.class,"");
return java.lang.Object
douglarek
03/15/2017, 10:04 AMResponse<String> response = new Response<>();
response.getDataEntryAs(String.class,"");
douglarek
03/15/2017, 10:05 AMresponse.getDataEntryAs(String.class,"");
will return java.lang.String
Andreas Sinz
03/15/2017, 10:10 AMdouglarek
03/15/2017, 10:14 AMget
it just use <E>douglarek
03/15/2017, 10:14 AMAndreas Sinz
03/15/2017, 10:52 AMdouglarek
03/15/2017, 10:53 AMAndreas Sinz
03/15/2017, 9:21 PM