Измените свой метод, чтобы использовать подстановочный знак:
public ArrayList<? extends MyInterface> getMyInterfaces() {
ArrayList<MyPojo> myPojos = new ArrayList<MyPojo>(0);
myPojos.add(new MyPojo(0));
myPojos.add(new MyPojo(1));
return myPojos;
}
Это предотвратит попытку вызывающего абонента добавить другие реализации интерфейса в список. В качестве альтернативы вы можете просто написать:
public ArrayList<MyInterface> getMyInterfaces() {
// Note the change here
ArrayList<MyInterface> myPojos = new ArrayList<MyInterface>(0);
myPojos.add(new MyPojo(0));
myPojos.add(new MyPojo(1));
return myPojos;
}
Как обсуждено в комментариях:
- Возвращение коллекций с подстановочными знаками может быть неудобно для звонящих
Обычно лучше использовать интерфейсы вместо конкретных типов для возвращаемых типов. Таким образом, предлагаемая подпись, вероятно, будет одной из:
public List<MyInterface> getMyInterfaces()
public Collection<MyInterface> getMyInterfaces()
public Iterable<MyInterface> getMyInterfaces()