(Javaでの作業)クラス全体でジェネリック型を使用する抽象クラスがあります。
public abstract class ConnectionProcessor<T>
{
public void process()
{
for (List<T> resultsPage : connection)
{
processPage(resultsPage);
}
}
protected abstract void processPage(List<T> resultsPage);
}
次の宣言で、上記の抽象クラスを拡張する別のクラスがあります。
public class AlbumProcessor<Album> extends ConnectionProcessor
{
@Override
protected void processPage(List resultsPage)
{
//Do stuff here specific to Album
}
}
この宣言は問題なく機能しますが、processPage
私は特定のことをしたいAlbum
ので、使用する必要がないときはキャストを避けようとしています。私はこれをメソッド宣言として優先します:
protected void processPage(List<Album> resultsPage)
processPage
ただし、これはからオーバーライドするための要件を満たしていませんConnectionProcessor
。どうしてこれなの?どうすれば目的の動作を得ることができますか?どこにでもAlbumProcessor
プラグインできると思いますが、そうではありません。<Album>
ConnectionProcessor
<T>