Consider the code:
public class A<T extends X> {
  public static interface Delegate {
    void doMagic(T t); // why can't I access "T" here?
  } 
  public A(Delegate delegate) { ... }
}
...
public class TheDelegate implements A<Y> { ... }
...
A<Y> a = new A<Y>(new A<Y>.Delegate() {
  @Override
  public void doMagic(Y y) {
    ...
  }
});
Why can't I access T from Delegate interface?
 
     
    