質問編集履歴

4

2018/10/21 03:25

投稿

ildahhk
ildahhk

スコア16

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
 
6
6
 
7
- 例えば、List<PC>型のあるlistがあって、
7
+ 例えば、
8
8
 
9
9
  ```java
10
10
 
11
-
11
+ List<PC>型のあるlistがあって、
12
12
 
13
13
  あるクラスPCがあって、String型のフィールドMakerがある。getterもある。
14
14
 
@@ -18,7 +18,9 @@
18
18
 
19
19
  list.stream().sort(Collector.comparing(PC::getMaker)).~略~;
20
20
 
21
+
22
+
21
- 、、、
23
+ ```
22
24
 
23
25
  という部分があったときの話で
24
26
 

3

2018/10/21 03:24

投稿

ildahhk
ildahhk

スコア16

test CHANGED
File without changes
test CHANGED
@@ -2,25 +2,25 @@
2
2
 
3
3
  javaのジェネリクスの型推論について
4
4
 
5
+
6
+
5
- List<PC>型のあるlistがあって、
7
+ 例えば、List<PC>型のあるlistがあって、
6
8
 
7
9
  ```java
8
10
 
9
- コード
10
11
 
11
- ```
12
12
 
13
13
  あるクラスPCがあって、String型のフィールドMakerがある。getterもある。
14
14
 
15
- List<PC> list = PC.getList()
15
+ List<PC> list = PC.getList();右辺では、具体的なPC型のインスタンスが入っているリストを取得しています。
16
16
 
17
+ そこから、streamを使うときの
17
18
 
19
+ list.stream().sort(Collector.comparing(PC::getMaker)).~略~;
18
20
 
19
- list.stream().sort(Collector.comparing(PC::getMaker))
21
+ 、、、
20
22
 
21
-
22
-
23
- という部分があったとき
23
+ という部分があったときの話で
24
24
 
25
25
 
26
26
 
@@ -28,4 +28,8 @@
28
28
 
29
29
 
30
30
 
31
- static <T,U extends Comparable<? superU>> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor)とあるのですが型推論としてはsortメソッドがConparator<PC>型を要求しているから、conparingメソッドのTがPCだと推論してわかって、そのおかげでメソッド参照の引数の型が決まったので返り値の型も分かるからFunctionのUも推論されていくからメソッド参照が成り立って、全体のジェネリクスが特定の型にきまるっていう感じだと考えたんですが、間違いでしょうか?このように悩むことが多いので、ジェネリクスがパラメータ化される型推論の仕様の全てが知りたいです、宜しくお願いします。
31
+ static <T,U extends Comparable<? superU>> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor)とあるのですが型推論としてはsortメソッドがConparator<PC>型を要求しているから、conparingメソッドのTがPCだと推論してわかって、そのおかげでメソッド参照の引数の型が決まったので返り値の型も分かるからFunctionのUも推論されていくからメソッド参照が成り立って、全体のジェネリクスが特定の型にきまるっていう感じだと考えたんですが、間違いでしょうか?
32
+
33
+
34
+
35
+ このように悩むことが多いので、ジェネリクスがパラメータ化される型推論の仕様の全てが知りたいです、宜しくお願いします。

2

2018/10/21 03:23

投稿

ildahhk
ildahhk

スコア16

test CHANGED
File without changes
test CHANGED
@@ -4,9 +4,23 @@
4
4
 
5
5
  List<PC>型のあるlistがあって、
6
6
 
7
+ ```java
8
+
9
+ コード
10
+
11
+ ```
12
+
13
+ あるクラスPCがあって、String型のフィールドMakerがある。getterもある。
14
+
15
+ List<PC> list = PC.getList()
7
16
 
8
17
 
18
+
9
- list.stream().sort(Collector.comparing(PC::getMaker))という部分があったとき
19
+ list.stream().sort(Collector.comparing(PC::getMaker))
20
+
21
+
22
+
23
+ という部分があったとき
10
24
 
11
25
 
12
26
 

1

2018/10/21 03:10

投稿

ildahhk
ildahhk

スコア16

test CHANGED
File without changes
test CHANGED
@@ -14,4 +14,4 @@
14
14
 
15
15
 
16
16
 
17
- static <T,U extends Comparable<? superU>> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor)とあるのですが型推論としてはsortメソッドがConparator<PC>型を要求しているから、conparingメソッドのTがPCだと推論してわかって、そのおかげでメソッド参照の引数の型が決まったので返り値の型も分かるからFanctionのUも推論されていくからメソッド参照が成り立って、全体のジェネリクスが特定の型にきまるっていう感じだと考えたんですが、間違いでしょうか?このように悩むことが多いので、ジェネリクスがパラメータ化される型推論の仕様の全てが知りたいです、宜しくお願いします。
17
+ static <T,U extends Comparable<? superU>> Comparator<T> comparing(Function<? super T,? extends U> keyExtractor)とあるのですが型推論としてはsortメソッドがConparator<PC>型を要求しているから、conparingメソッドのTがPCだと推論してわかって、そのおかげでメソッド参照の引数の型が決まったので返り値の型も分かるからFunctionのUも推論されていくからメソッド参照が成り立って、全体のジェネリクスが特定の型にきまるっていう感じだと考えたんですが、間違いでしょうか?このように悩むことが多いので、ジェネリクスがパラメータ化される型推論の仕様の全てが知りたいです、宜しくお願いします。