回答編集履歴

1

詳細

2017/02/26 01:23

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1 +1,49 @@
1
1
  駒をenumで作成して、数の記録はEnumMapを使うと良いです。
2
+
3
+
4
+
5
+ 「クラスを取得する」というのは、全種類の駒をクラスとして定義しているからですよね?
6
+
7
+ enumにすればそれぞれが「値」になるのでさほど違和感なくMapに組み込めます。
8
+
9
+ コンストラクタを用意して初期化を行えるようにしたり、
10
+
11
+ 共通の抽象メソッドを用意し、それを各列挙でオーバーライドすることもできます。
12
+
13
+ ```java
14
+
15
+ public enum Piece {
16
+
17
+ FU(1) {
18
+
19
+ // オーバーライドなど
20
+
21
+ }
22
+
23
+ KIN(2) {
24
+
25
+ // オーバーライドなど
26
+
27
+ }
28
+
29
+ ...
30
+
31
+ private final int x;
32
+
33
+ private Piece (int i) { //コンストラクタはprivate限定
34
+
35
+ x = i;
36
+
37
+ }
38
+
39
+ }
40
+
41
+ ---
42
+
43
+
44
+
45
+ Map<Piece, Integer> table = new EnumMap<>(Piece.class);
46
+
47
+ table.merge(Piece.FU, 1, Integer::sum);
48
+
49
+ ```