たとえば、次のコードは、2番目のオブジェクトがTreeSetに追加されると、ClassCastExceptionをスローします。タイプパラメータが比較可能なタイプのみになるようにTreeSetを記述できませんでしたか?つまり、ObjectがComparableでないため、TreeSetはコンパイルされません。そうすれば、ジェネリックは実際にその仕事をします-タイプセーフであるということです。
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String [] args) {
TreeSet<Object> t = new TreeSet<Object>();
t.add(new Object());
t.add(new Object());
}
}