すみませんが、初めて3か月くらいの初心者なのでお助け願います
javaのジェネリクスの型推論について
例えば、
java
1List<PC>型のあるlistがあって、 2あるクラスPCがあって、String型のフィールドMakerがある。getterもある。 3List<PC> list = PC.getList();右辺では、具体的なPC型のインスタンスが入っているリストを取得しています。 4そこから、streamを使うときの 5list.stream().sort(Collector.comparing(PC::getMaker)).~略~; 6
という部分があったときの話で
conparingはCollectorクラスのメソッドでAPIには
static <T,U extends Comparable<? superU>> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor)とあるのですが型推論としてはsortメソッドがConparator<PC>型を要求しているから、conparingメソッドのTがPCだと推論してわかって、そのおかげでメソッド参照の引数の型が決まったので返り値の型も分かるからFunctionのUも推論されていくからメソッド参照が成り立って、全体のジェネリクスが特定の型にきまるっていう感じだと考えたんですが、間違いでしょうか?
このように悩むことが多いので、ジェネリクスがパラメータ化される型推論の仕様の全てが知りたいです、宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー