2016-09-18 9 views
3

私はExecutorServiceのと呼び出し可能オブジェクトについて学び、私は、この行のチェックを外す割り当てやっていると言ってintelijから警告を受けるよ:私は正しく割り当てる方法を得ることはありませんExecutorServiceのチェックを外す割り当て

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クラスです。 - >互換性のない戻り値の型

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

これは(コールでOrderWorkerの衝突で呼び出し()を言ってエラーになります)呼び出し可能に:それを実装する場合、私はまたDataWorkerにタイプを与えようと試み

EDIT

私は間違って何をしていますか?課題を確認するためには何が必要ですか?あなたが変更する必要がどのような

答えて

1

次のように、OrderWorkerの宣言とcallの戻り値の型である:

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

私は他の目的のためのインターフェースを使用したいが、 '拡張のようなインターフェースで呼び出し可能な拡張Callable >あなたの説明どおりに動作します!ありがとうございました! –

+0

@ J.Doeの優れたニュース –

関連する問題