class ExposeProblem { public abstract class Parent{} public abstract class Child extends Parent { public void method(final Parent f) {} public void method(final Child f) {} } void call(){ Child f1 = null; Child f2 = null; f1.method(f2); // <= This is where the error is shown. } }