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]