このコードはエラーなしでコンパイルされます。
private FutureTask<MessageSource> loadingTask(final Locale locale)
{
return new FutureTask<MessageSource>(new Callable<MessageSource>()
{
@Override
public MessageSource call()
throws IOException
{
return loader.load(locale);
}
});
}
しかし、Callable
インターフェースはこれを定義します:
public V call()
throws Exception;
オーバーライドがスローすることを宣言できるのはIOException
なぜですか?
注:私はすでにグアバなどでそれを見て、それを悪用しCacheLoader
ました。