ExecutorService 未经检查的分配

ExecutorService unchecked assignment

我正在学习 ExecutorService 和 Callables,但收到来自 intelij 的警告,说我正在为此行进行未经检查的分配:

Future<OrderWorker<OfferType>> future = executorService.submit(new OrderWorker<OfferType>(anOfferSet));

我不知道如何正确分配。这是代码:

ExecutorService executorService = Executors.newCachedThreadPool();
List<Future<OrderWorker<OfferType>>> futures = new ArrayList<>();
for (OfferType anOfferSet : offerSet) {
    // the next assignment is unchecked:
    Future<OrderWorker<OfferType>> future = executorService.submit(new OrderWorker<OfferType>(anOfferSet));
    futures.add(future);
}

订单工人:

public class OrderWorker<I extends OfferType> implements DataWorker {
    private Logger log = Logger.getLogger(OrderWorker.class);
    private final OfferType offer;

    public OrderWorker(I data) {
        this.offer = data;
    }

    public OfferType getOffer() {
        return offer;
    }

    @Override
    public Object call() throws Exception {
        Thread.sleep(5000);
        log.info(offer.getListingPrice().getAmount());
        return this;
    }
}

DataWorker 接口:

interface DataWorker<I extends OfferType> extends Callable<I> {}

OfferType 是一个简单的 POJO class.

编辑

我在实现的时候也试过给DataWorker一个类型:

public class OrderWorker<I extends OfferType> implements DataWorker<I>

这给出了一个错误,指出 OrderWorker 中的 call() 与 Callable 中的 call() 冲突 -> 不兼容 return 类型

我哪里做错了,我必须怎么做才能检查作业?

需要修改的是OrderWorker的声明和call的return类型,如下:

public class OrderWorker<I extends OfferType> implements Callable<OrderWorker<I>> {
    ...
    @Override
    public OrderWorker<I> call() throws Exception {
        ...
    }
}