public class Outer_1 { abstract class Inner { abstract public void foo(E e); } } class Child extends Outer_1 { // the implicit prefix for Inner is Outer instead of Outer public Inner getInner() { return new Inner() { public void foo(String e) { System.out.println("meh "+e); } }; } }