what happens if down the line the index of the type changes?: )

class FunnierFactory<A,B> extends FunnyFactory<B>

-igor

On Wed, Sep 16, 2009 at 3:43 PM, jWeekend <[email protected]> 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: [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