... or, if you subclass the subclass ...
In the form I gave it's very fragile - just a trick really, but it tells you
a bit about what is actually in the bytecode and contradicts (as
conclusively as using javap) what some would have you believe.

Regards - Cemal 
jWeekend OO & Java Technologies, Wicket Training and Development 
http://jWeekend.com



igor.vaynberg wrote:
> 
> what happens if down the line the index of the type changes?: )
> 
> class FunnierFactory<A,B> extends FunnyFactory
> 
> -igor
> 
> On Wed, Sep 16, 2009 at 3:43 PM, jWeekend <jweekend_for...@cabouge.com>
> wrote:
>> Since you can NOT do
>>
>> class S<T>{S(){T t = new T();}} // broken
>>
>> how would you create an object of type T somewhere in S? Think about this
>> before you read on ...
>>
>> At the risk of reigniting the world-famous generics debates of
>> yesteryear,
>> just as our noble core-developers regroup to start work on making 1.5
>> even
>> better than what is already the best Java web framework, I thought I'd
>> share
>> the idea I suggested to one of our developers who was having a bad day
>> with
>> generics (for several good reasons [1][2]) a couple of months ago, in
>> case
>> you can make use of it somewhere, or, find an even more convoluted
>> solution
>> - notice the innocent looking abstract modifier!
>> // not real code
>> // don't try this at home without adult supervision!
>> public abstract class FunnyFactory<T> {
>>  private T instance = null;
>>  public T getInstance() {
>>   if (instance == null) {
>>     try {
>>       final ParameterizedType gsc =
>>         (ParameterizedType)getClass().getGenericSuperclass();
>>       final Class<T> typeT =         (Class<T>)
>> gsc.getActualTypeArguments()[0];
>>       instance = typeT.newInstance();
>>     } catch (InstantiationException e) {
>>       e.printStackTrace();
>>     } catch (IllegalAccessException e) {
>>       e.printStackTrace();
>>     }
>>   }
>>   return instance;  }
>> }
>>
>> ...
>>
>> public class CreateInstanceOfTypeParameter {
>>   @Test
>>   public void testCreateInstanceOfTypeParameter() {
>>       FunnyFactory<Point> factory = new FunnyFactory<Point>() {};
>>     factory .getInstance().x = 22;
>>     factory .getInstance().y = 47;
>>     assertEquals(new Point(22, 47), factory.getInstance());
>>   }
>> }
>>
>> Regards - Cemal jWeekend OO & Java Technologies, Wicket Training and
>> Development http://jWeekend.com
>>
>> [1] http://gafter.blogspot.com/2006/11/reified-generics-for-java.html
>> [2]
>> http://weblogs.java.net/blog/arnold/archive/2005/06/generics_consid_1.html
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/-OT--More-%22Java%27s-generic-type-parameters-are-not-reified%22...-tp25482235p25487838.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to