Java 通用铸造问题
我已经定义了一个通用接口,其中包含一个供应商和一个消费者:Java 通用铸造问题,java,generics,Java,Generics,我已经定义了一个通用接口,其中包含一个供应商和一个消费者: public interface ItemProcessor<T> { processItem(T task); T getNextItem(); } 公共接口项目处理器{ processItem(T任务); T getNextItem(); } 但是,我在使用此界面时遇到问题: List<ItemProcessor<?>> itemProcessors = new ArrayLi
public interface ItemProcessor<T> {
processItem(T task);
T getNextItem();
}
公共接口项目处理器{
processItem(T任务);
T getNextItem();
}
但是,我在使用此界面时遇到问题:
List<ItemProcessor<?>> itemProcessors = new ArrayList<>();
// add itemProcessors to list
for (ItemProcessor<?> itemProcessor : itemProcessors) {
itemProcessor.processItem(itemProcessor.getNextItem());
}
List您可以通过所谓的“通配符捕获方法”对此稍加修改:
私有静态无效进程(ItemProcessor项){
processItem(item.getNextItem());
}
然后将通话改为:
for (ItemProcessor<?> itemProcessor : itemProcessors) {
process(itemProcessor);
}
for(ItemProcessor ItemProcessor:ItemProcessor){
进程(项目处理器);
}
我有两个答案,例如解释为什么会发生这种情况。但是也有不应该,这就是为什么它会给你错误
for (ItemProcessor<?> itemProcessor : itemProcessors) {
process(itemProcessor);
}