Java 带有泛型参数接口的回调
我有一个通用的容器接口,用于用Java代码抽象出AndroidJava 带有泛型参数接口的回调,java,generics,Java,Generics,我有一个通用的容器接口,用于用Java代码抽象出AndroidSparseArray: public interface MyContainer<T> { T get(int key); void forEach(Consumer<T> consumer); } 但我得到一个编译器错误: error: incompatible types: Consumer<Interface> cannot be converted to Consumer
SparseArray
:
public interface MyContainer<T> {
T get(int key);
void forEach(Consumer<T> consumer);
}
但我得到一个编译器错误:
error: incompatible types: Consumer<Interface> cannot be converted to Consumer<Implementation>
错误:不兼容类型:无法将使用者转换为使用者
如何更改
MyContainer
接口以允许使用者
传递给我的类?在MyContainer
中,使用者
的类型参数可以将T
作为下限
void forEach(Consumer<? super T> consumer);
void-forEach(Consumer)Iterable允许在其forEach()方法中传递消费者吗?查看javadoc,并执行相同的操作。尝试将MyContainer#forEach更改为void-forEach(Consumer@f.khantsis:这倒过来了:它必须是Consumer
,这是无效的语法。嗯。我不知道我可以在那里使用super
。
void forEach(Consumer<? super T> consumer);