Skip to content

Commit 021dde6

Browse files
committed
lazy init defaultcolors (only if toString used)
1 parent 790ae83 commit 021dde6

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

src/main/java/bwapi/Color.java

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package bwapi;
22

3-
43
import java.util.HashMap;
54
import java.util.Map;
65
import java.util.Objects;
@@ -61,21 +60,7 @@ public final class Color {
6160
*/
6261
public final static Color Grey = new Color(74);
6362

64-
private final static Map<Integer, String> defaultColors = new HashMap<>();
65-
static {
66-
defaultColors.put(Color.Red.id, "Red");
67-
defaultColors.put(Color.Blue.id, "Blue");
68-
defaultColors.put(Color.Teal.id, "Teal");
69-
defaultColors.put(Color.Purple.id, "Purple");
70-
defaultColors.put(Color.Orange.id, "Orange");
71-
defaultColors.put(Color.Brown.id, "Brown");
72-
defaultColors.put(Color.White.id, "White");
73-
defaultColors.put(Color.Yellow.id, "Yellow");
74-
defaultColors.put(Color.Green.id, "Green");
75-
defaultColors.put(Color.Cyan.id, "Cyan");
76-
defaultColors.put(Color.Black.id, "Black");
77-
defaultColors.put(Color.Grey.id, "Grey");
78-
}
63+
private static Map<Integer, String> defaultColors = null;
7964

8065
private static final RGBQUAD RGBRESERVE = new RGBQUAD(0, 0, 0, 0xFF);
8166

@@ -210,8 +195,9 @@ public int hashCode() {
210195

211196
@Override
212197
public String toString() {
213-
if (defaultColors.containsKey(id)) {
214-
return "Color." + defaultColors.get(id);
198+
String defaultColor = getDefaultColor(id);
199+
if (defaultColor != null) {
200+
return "Color." + defaultColor;
215201
}
216202
return "Color{" +
217203
"red=" + red() +
@@ -237,4 +223,23 @@ private static class RGBQUAD {
237223
this.rgbReserved = (byte)rgbReserved;
238224
}
239225
}
226+
227+
private static String getDefaultColor(final int id) {
228+
if (defaultColors == null) {
229+
defaultColors = new HashMap<>();
230+
defaultColors.put(Color.Red.id, "Red");
231+
defaultColors.put(Color.Blue.id, "Blue");
232+
defaultColors.put(Color.Teal.id, "Teal");
233+
defaultColors.put(Color.Purple.id, "Purple");
234+
defaultColors.put(Color.Orange.id, "Orange");
235+
defaultColors.put(Color.Brown.id, "Brown");
236+
defaultColors.put(Color.White.id, "White");
237+
defaultColors.put(Color.Yellow.id, "Yellow");
238+
defaultColors.put(Color.Green.id, "Green");
239+
defaultColors.put(Color.Cyan.id, "Cyan");
240+
defaultColors.put(Color.Black.id, "Black");
241+
defaultColors.put(Color.Grey.id, "Grey");
242+
}
243+
return defaultColors.getOrDefault(id,null);
244+
}
240245
}

src/test/java/bwapi/ColorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,8 @@ public void toStringTest() {
330330
assertEquals("Color.Black", Color.Black.toString());
331331
assertEquals("Color.Black", new Color(0, 0, 0).toString());
332332
assertEquals("Color.Black", new Color(Color.Black.id).toString());
333+
assertEquals("Color.Orange", Color.Orange.toString());
334+
assertEquals("Color.Purple", Color.Purple.toString());
333335
assertEquals("Color{red=16, green=16, blue=16}", new Color(16, 16, 16).toString());
334336
}
335337
}

0 commit comments

Comments
 (0)