4

Java Puzzlers のコードに従うことを検討してください

class Gloam<T>{

String glom(Collection<?> objs ) {
    System.out.println("collection");
    String result = "";
    for (Object o : objs ){
        result += o;
    }
    return result;
}

int glom(List <Integer> ints ) {
    System.out.println("List");
    int result = 0;
    for ( int i : ints )
        result += i ;
    return result;
}

public static void main(String[] args) {
    List<String> strings = Arrays.asList("1", "2", "3");
    System.out.println(new Gloam().glom(strings));
}

}

このプログラムを実行すると、クラス キャスト例外が発生しますが、メイン メソッドで Gloam クラスにジェネリック引数を指定すると、正常に動作します。

public static void main(String[] args) {
    List<String> strings = Arrays.asList("1", "2", "3");
    System.out.println(new Gloam<Date>().glom(strings));
}

クラス型パラメーターでジェネリックがどのように機能するかわかりませんか?

4

3 に答える 3