interface A { public T get(T a); } interface B { public T get(T b); } class C implements A, B { public T get(T c) { return c; } } class Example6 & B>{ public static void main(String[] args) { A a = new A(){ @Override public Number get(Number a) { return a; } }; System.out.println(a.get(1)); B b = new B(){ @Override public Integer get(Integer b) { return b; } }; System.out.println(b.get(2)); } // Same for Double, Float, // Long, Short, Byte, // Which are extended by Number }