質問するログイン新規登録

回答編集履歴

4

ラムダ式とコンストラクタ参照を混ぜてたので修正

2019/05/02 23:29

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -31,9 +31,9 @@
31
31
  Java8以降なら、例えばこの`getInstance()`メソッドであれば、Supplierインタフェースで代用することもできるかと思います。
32
32
  ```java
33
33
  enum Kubun{
34
- K1(Arrays.asList("あかさ1","たなは1","まやら1"), () -> K1bean::new),
34
+ K1(Arrays.asList("あかさ1","たなは1","まやら1"), K1bean::new),
35
- K2(Arrays.asList("あかさ2","たなは2","まやら2"), () -> K2bean::new),
35
+ K2(Arrays.asList("あかさ2","たなは2","まやら2"), K2bean::new),
36
- K3(Arrays.asList("あかさ3","たなは3","まやら3"), () -> K3bean::new);
36
+ K3(Arrays.asList("あかさ3","たなは3","まやら3"), K3bean::new);
37
37
  // もしくは共通する部分に関してはnullにして、メソッドの方でnullか否かで判定するという手もある。
38
38
  // K3(Arrays.asList("あかさ3","たなは3","まやら3"), null);
39
39
 

3

後半にオーバーライド関係なかった

2019/05/02 23:29

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -31,7 +31,6 @@
31
31
  Java8以降なら、例えばこの`getInstance()`メソッドであれば、Supplierインタフェースで代用することもできるかと思います。
32
32
  ```java
33
33
  enum Kubun{
34
- // 分岐するものについてはそれぞれオーバーライド
35
34
  K1(Arrays.asList("あかさ1","たなは1","まやら1"), () -> K1bean::new),
36
35
  K2(Arrays.asList("あかさ2","たなは2","まやら2"), () -> K2bean::new),
37
36
  K3(Arrays.asList("あかさ3","たなは3","まやら3"), () -> K3bean::new);

2

Supplierインタフェースを利用

2019/05/02 23:28

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -26,4 +26,30 @@
26
26
  return new K3bean();
27
27
  }
28
28
  }
29
+ ```
30
+
31
+ Java8以降なら、例えばこの`getInstance()`メソッドであれば、Supplierインタフェースで代用することもできるかと思います。
32
+ ```java
33
+ enum Kubun{
34
+ // 分岐するものについてはそれぞれオーバーライド
35
+ K1(Arrays.asList("あかさ1","たなは1","まやら1"), () -> K1bean::new),
36
+ K2(Arrays.asList("あかさ2","たなは2","まやら2"), () -> K2bean::new),
37
+ K3(Arrays.asList("あかさ3","たなは3","まやら3"), () -> K3bean::new);
38
+ // もしくは共通する部分に関してはnullにして、メソッドの方でnullか否かで判定するという手もある。
39
+ // K3(Arrays.asList("あかさ3","たなは3","まやら3"), null);
40
+
41
+ private List<String> codes;
42
+ private Supplier<? extends BeanInterface> supplier;
43
+
44
+ private Kubun(List<String> codes, Supplier<? extends BeanInterface> supplier) {
45
+ this.codes = codes;
46
+ this.supplier = supplier;
47
+ }
48
+
49
+ public BeanInterface getInstance(){
50
+ return supplier.get();
51
+ // K3の第2引数をnullにしている場合
52
+ // return supplier == null ? new K3bean() : supplier.get();
53
+ }
54
+ }
29
55
  ```

1

コメント修正

2019/05/02 16:58

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  ```java
4
4
  enum Kubun{
5
+ // 分岐するものについてはそれぞれオーバーライド
5
6
  K1("あかさ1","たなは1","まやら1"){
6
7
  @Override
7
8
  public BeanInterface getInstance(){
@@ -20,7 +21,7 @@
20
21
  private String code2;
21
22
  private String code3;
22
23
 
23
- // 結局ここで条件分岐必要
24
+ // 共通処理を書く
24
25
  public BeanInterface getInstance(){
25
26
  return new K3bean();
26
27
  }