J2SE5でGenericsなクラスを作ろうとして若干はまった。何かの役に立つかもしれないのでメモしておこう。
public class GenericArray<T extends Comparable<? super T>> {
private Comparable<? super T>[] records;
public GenericArray(int max) {
records = (Comparable<? super T>[]) new Comparable[max];
}
}
言語仕様上、new T[]としてGenericsな型のインスタンスを生成することは出来ないので、コード上ではあらかじめ既知の型で生成し、欲しい型にキャストすることになる。このとき、Object[]からではなく、Comparable[]からキャストしないとエラーになるようだ。また、<? super T>もつけるべきらしい。
細かいことはSunによるチュートリアルを参照のこと
http://yudai.arielworks.com/memo/2005/10/10/235348.trackback
末尾に「8 + 2」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「235348.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。