On Wed, 9 Apr 2008, Antonio Petrelli wrote: > 2008/4/9, James Carman <[EMAIL PROTECTED]>: > > Does anyone have code that can take care of this situation: > > > > List<String> strings = new ArrayList<String>(); > > > > Class returnType = getReturnType(strings.getClass(), "get", int.class); > > > > I want the "returnType" to be java.lang.String. Does anyone have code > > that would return that? Is it possible? > > It's not possible: > http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html > > <snip> > Generics are implemented by type erasure: generic type information is > present only at compile time, after which it is erased by the > compiler. > </snip>
Right, you can get at the declared type(s) with e.g. List<String> strings = new ArrayList<String>(); ParameterizedType parameterizedType = (ParameterizedType) strings.getClass().getGenericSuperclass(); Type[] types = parameterizedType.getActualTypeArguments(); System.out.println(Arrays.asList(types)); [E] static class StringList extends ArrayList<String> { } List<String> strings = new StringList(); ParameterizedType parameterizedType = (ParameterizedType) strings.getClass().getGenericSuperclass(); Type[] types = parameterizedType.getActualTypeArguments(); System.out.println(Arrays.asList(types)); [class java.lang.String] but not the runtime type(s). michael --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]