import java.util.List; class InterfaceStaticMethodsWithSameErasure { interface A { static A foo(List a) { return null; } } interface B extends A { static B foo(List b) { return null; } } static abstract class C implements B { } static class D extends C { } }