回答編集履歴
4
ラムダ式とコンストラクタ参照を混ぜてたので修正
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"),
|
34
|
+
K1(Arrays.asList("あかさ1","たなは1","まやら1"), K1bean::new),
|
35
|
-
K2(Arrays.asList("あかさ2","たなは2","まやら2"),
|
35
|
+
K2(Arrays.asList("あかさ2","たなは2","まやら2"), K2bean::new),
|
36
|
-
K3(Arrays.asList("あかさ3","たなは3","まやら3"),
|
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
後半にオーバーライド関係なかった
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インタフェースを利用
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
コメント修正
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
|
}
|