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 {
...
}
}
我正在学习 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 {
...
}
}