class Test { void bar() { new B().foo(""); } class A { void foo(T t){} } class B extends A { void foo(E e){ new InnerClass(e).invoke(); } private class InnerClass { private E e; public InnerClass(E e) { this.e = e; } public void invoke() { System.out.println(e); } } } }