ジェネリクス・ヘルにようこそ!
Java の Use-Site Variance のみなGenerics の辛み
W
@Wmikefish
private static <E> Set<E> union(Set<? extends E> s1, Set<? extends E> s2) この宣言とかなあ
2015-12-04 01:35:29
W
@Wmikefish
private static <T extends Comparable<? super T>> T max(List<? extends T> list) んんん
2015-12-04 01:37:48
なぎせ ゆうき
@nagise
たとえば class A implements Compareable<A> という自然順序付けされたクラスAがあったとして、継承してclass B extends A としたとする。 ここでクラスBはCompareable<A>である。<B>ではなく<A>だ
2015-12-04 10:37:35
なぎせ ゆうき
@nagise
なのでT extends Comparable<T>としてしまうと、先のクラスBは型が合致しない… のだが、一般的な変数は共変性があって、子のクラスは親の型に暗黙に変換可能とされるので事態が複雑怪奇になる。 かつ、ジェネリクスの<>内は非変性で変性が異なるので…
2015-12-04 10:45:07