... 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