回答編集履歴

4

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

2019/05/02 23:29

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -64,11 +64,11 @@
64
64
 
65
65
  enum Kubun{
66
66
 
67
- K1(Arrays.asList("あかさ1","たなは1","まやら1"), () -> K1bean::new),
67
+ K1(Arrays.asList("あかさ1","たなは1","まやら1"), K1bean::new),
68
68
 
69
- K2(Arrays.asList("あかさ2","たなは2","まやら2"), () -> K2bean::new),
69
+ K2(Arrays.asList("あかさ2","たなは2","まやら2"), K2bean::new),
70
70
 
71
- K3(Arrays.asList("あかさ3","たなは3","まやら3"), () -> K3bean::new);
71
+ K3(Arrays.asList("あかさ3","たなは3","まやら3"), K3bean::new);
72
72
 
73
73
  // もしくは共通する部分に関してはnullにして、メソッドの方でnullか否かで判定するという手もある。
74
74
 

3

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

2019/05/02 23:29

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -64,8 +64,6 @@
64
64
 
65
65
  enum Kubun{
66
66
 
67
- // 分岐するものについてはそれぞれオーバーライド
68
-
69
67
  K1(Arrays.asList("あかさ1","たなは1","まやら1"), () -> K1bean::new),
70
68
 
71
69
  K2(Arrays.asList("あかさ2","たなは2","まやら2"), () -> K2bean::new),

2

Supplierインタフェースを利用

2019/05/02 23:28

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -55,3 +55,55 @@
55
55
  }
56
56
 
57
57
  ```
58
+
59
+
60
+
61
+ Java8以降なら、例えばこの`getInstance()`メソッドであれば、Supplierインタフェースで代用することもできるかと思います。
62
+
63
+ ```java
64
+
65
+ enum Kubun{
66
+
67
+ // 分岐するものについてはそれぞれオーバーライド
68
+
69
+ K1(Arrays.asList("あかさ1","たなは1","まやら1"), () -> K1bean::new),
70
+
71
+ K2(Arrays.asList("あかさ2","たなは2","まやら2"), () -> K2bean::new),
72
+
73
+ K3(Arrays.asList("あかさ3","たなは3","まやら3"), () -> K3bean::new);
74
+
75
+ // もしくは共通する部分に関してはnullにして、メソッドの方でnullか否かで判定するという手もある。
76
+
77
+ // K3(Arrays.asList("あかさ3","たなは3","まやら3"), null);
78
+
79
+
80
+
81
+ private List<String> codes;
82
+
83
+ private Supplier<? extends BeanInterface> supplier;
84
+
85
+
86
+
87
+ private Kubun(List<String> codes, Supplier<? extends BeanInterface> supplier) {
88
+
89
+ this.codes = codes;
90
+
91
+ this.supplier = supplier;
92
+
93
+ }
94
+
95
+
96
+
97
+ public BeanInterface getInstance(){
98
+
99
+ return supplier.get();
100
+
101
+ // K3の第2引数をnullにしている場合
102
+
103
+ // return supplier == null ? new K3bean() : supplier.get();
104
+
105
+ }
106
+
107
+ }
108
+
109
+ ```

1

コメント修正

2019/05/02 16:58

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -5,6 +5,8 @@
5
5
  ```java
6
6
 
7
7
  enum Kubun{
8
+
9
+ // 分岐するものについてはそれぞれオーバーライド
8
10
 
9
11
  K1("あかさ1","たなは1","まやら1"){
10
12
 
@@ -42,7 +44,7 @@
42
44
 
43
45
 
44
46
 
45
- // 結局ここで条件分岐必要
47
+ // 共通処理を書く
46
48
 
47
49
  public BeanInterface getInstance(){
48
50