Нет, потому что универсальные типы не являются ковариантными.
List<BImpl>
не является подклассом List<B>
.
Часть контракта метода в интерфейсе A состоит в том, что он возвращает List<B>
.
public interface A {
List<B> getBs();
}
A List<BImpl>
не поддерживает этот контракт. Например, получатель, ожидающий List<B>
, может попытаться добавить в список экземпляры других типов B, например, BImpl2
и BImpl3
.
.
A List<B>
, содержащий только BImpl, будет поддерживать контракт.