Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通用铸造问题_Java_Generics - Fatal编程技术网

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);
}