Well, I figured out a way to have proxy determine the type of a method
when doing invocation recording.  It took me a while, but I got it.
The code is checked into the proxy 2.0 branch.  Now, I've got my
builders working for commons-expression, too! :)


On Wed, Apr 9, 2008 at 6:30 PM, Michael Heuer <[EMAIL PROTECTED]> wrote:
> 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]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to