質問編集履歴

2

誤字を修正しました。

2022/05/17 12:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -19,11 +19,10 @@
19
19
 
20
20
  ~~Stack Overflow で説明されていたものを使いたいのですが、上のコードでの Data の型も変化するのでそちらもジェネリクスにしたところ、エラーが発生するようになってしまい原因も掴めません。~~
21
21
 
22
- **ジェネリクスについて勘違いしていただけでした。ご指摘ありがとうございました。
22
+ ジェネリクスについて勘違いしていただけでした。ご指摘ありがとうございました。
23
23
  ジェネリクス(ソースコード中のK)が可変長引数の中で同じ型でないといけないようです。
24
- 引用テキスト
25
- ただ、上の目的のためにはそれぞれ別の型を指定したい(その型のcompareToを使用したいため)ので、何か複数の型を指定する方法があれば教えていただきたいです。**
24
+ ただ、上の目的のためにはそれぞれ別の型を指定したい(その型のcompareToを使用したいため)ので、何か複数の型を指定する方法があれば教えていただきたいです。
26
- 2022/5/17 21:00 追記
25
+ (2022/5/17 21:00 追記)
27
26
 
28
27
  ### エラーメッセージ (複数の型を指定していた場合のみ発生します)
29
28
  ```

1

コンパイルエラーの原因を教えていただき理解できたので質問内容を複数の型への対応方法についてへ編集しました。

2022/05/17 12:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -17,9 +17,15 @@
17
17
  .thenComparing(Data::getter, Comparator.nullsFirst(Comparator.naturalOrder())
18
18
  ```
19
19
 
20
- Stack Overflow で説明されていたものを使いたいのですが、上のコードでの Data の型も変化するのでそちらもジェネリクスにしたところ、エラーが発生するようになってしまい原因も掴めません。
20
+ ~~Stack Overflow で説明されていたものを使いたいのですが、上のコードでの Data の型も変化するのでそちらもジェネリクスにしたところ、エラーが発生するようになってしまい原因も掴めません。~~
21
21
 
22
+ **ジェネリクスについて勘違いしていただけでした。ご指摘ありがとうございました。
23
+ ジェネリクス(ソースコード中のK)が可変長引数の中で同じ型でないといけないようです。
24
+ 引用テキスト
25
+ ただ、上の目的のためにはそれぞれ別の型を指定したい(その型のcompareToを使用したいため)ので、何か複数の型を指定する方法があれば教えていただきたいです。**
26
+ 2022/5/17 21:00 追記
27
+
22
- ### エラーメッセージ
28
+ ### エラーメッセージ (複数の型を指定していた場合のみ発生します)
23
29
  ```
24
30
  ./Main.java:8: error: method comparatorNullsFirst in class Main cannot be applied to given types;
25
31
  Comparator<Data> comparator = comparatorNullsFirst(Data::getString, Data::getInteger);
@@ -42,6 +48,9 @@
42
48
  class Main{
43
49
  public static void main(String[] args) {
44
50
  Comparator<Data> comparator = comparatorNullsFirst(Data::getString, Data::getInteger);
51
+ /*この部分でそれぞれのFunctionが同じ型を返さないと
52
+ 上記のエラーメッセージでコンパイルエラーになるのですが、
53
+ 複数の型を指定したいです。*/
45
54
  TreeSet<Data> set = new TreeSet<Data>(comparator);
46
55
  }
47
56
 
@@ -67,6 +76,8 @@
67
76
  }
68
77
 
69
78
  Integer getInteger() {
79
+ /*このメソッドがStringを返すようにすれば問題ないのですが、
80
+ IntegerとしてでなくStringとして比較されてしまうのでできません*/
70
81
  return integer;
71
82
  }
72
83
  }
@@ -74,6 +85,6 @@
74
85
 
75
86
  ### 試したこと
76
87
 
77
- - 引数をリストにしてみましたが、呼び出し側で別のコンパイルエラーが発生するようになりました。
88
+ - ~~引数をリストにしてみましたが、呼び出し側で別のコンパイルエラーが発生するようになりました。~~
78
89
 
79
- - ジェネリクスの extends を消してみましたが、同様にコンパイルエラーが発生しました
90
+ - ~~ジェネリクスの extends を消してみましたが、同様にコンパイルエラーが発生しました~~