Unrelated defaults inheritance error for type variables: why?
Disclaimer : this is not about this case (while error sounds as same): class inherits unrelated defaults for spliterator() from types java.util.Set and java.util.List and here is why: consider two interfaces (in package " a ") interface I1 { default void x() {} } interface I2 { default void x() {} } It is definitely clear to me why we can not declare such class as: abstract class Bad12 implements I1, I2 { } (!) But I can not understand this restriction with reference to type variables : class A<T extends I1&I2> { List<T> makeList() { return new ArrayList<>(); } } with error: class java.lang