У меня есть общий интерфейс контейнера, который я использую для абстрагирования Android SparseArray
в коде Java:
public interface MyContainer<T> {
T get(int key);
void forEach(Consumer<T> consumer);
}
И у меня есть класс с контейнером Implementation
, но я хочу толькоexpose Interface
извне:
MyContainer<Implementation> data;
Interface get(int key) {
return data.get(key);
}
void method(Consumer<Interface> callback) {
data.forEach(callback); //here
}
Но я получаю ошибку компилятора:
error: incompatible types: Consumer<Interface> cannot be converted to Consumer<Implementation>
Как изменить интерфейс MyContainer
, чтобы разрешить передачу Consumer<Interface>
вмой класс?