@@ -123,14 +123,24 @@ public static Ledger ledger(int size) {
123123
124124 boolean getBoolean (String tag );
125125
126+ boolean getBooleanOrDefault (String tag , boolean defaultValue );
127+
126128 int getInt (String tag );
127129
130+ int getIntOrDefault (String tag , int defaultValue );
131+
128132 long getLong (String tag );
129133
134+ long getLongOrDefault (String tag , long defaultValue );
135+
130136 float getFloat (String tag );
131137
138+ float getFloatOrDefault (String tag , float defaultValue );
139+
132140 double getDouble (String tag );
133141
142+ double getDoubleOrDefault (String tag , double defaultValue );
143+
134144 /**
135145 * Provides the corresponding Entry object - preferable w/ optimized TagMap if the Entry needs to
136146 * have its type checked
@@ -1162,26 +1172,46 @@ public final String getString(String tag) {
11621172 }
11631173
11641174 public final boolean getBoolean (String tag ) {
1175+ return this .getBooleanOrDefault (tag , false );
1176+ }
1177+
1178+ public final boolean getBooleanOrDefault (String tag , boolean defaultValue ) {
11651179 Entry entry = this .getEntry (tag );
1166- return entry == null ? false : entry .booleanValue ();
1180+ return entry == null ? defaultValue : entry .booleanValue ();
11671181 }
11681182
11691183 public final int getInt (String tag ) {
1184+ return getIntOrDefault (tag , 0 );
1185+ }
1186+
1187+ public final int getIntOrDefault (String tag , int defaultValue ) {
11701188 Entry entry = this .getEntry (tag );
1171- return entry == null ? 0 : entry .intValue ();
1189+ return entry == null ? defaultValue : entry .intValue ();
11721190 }
11731191
11741192 public final long getLong (String tag ) {
1193+ return this .getLongOrDefault (tag , 0L );
1194+ }
1195+
1196+ public final long getLongOrDefault (String tag , long defaultValue ) {
11751197 Entry entry = this .getEntry (tag );
1176- return entry == null ? 0L : entry .longValue ();
1198+ return entry == null ? defaultValue : entry .longValue ();
11771199 }
11781200
11791201 public final float getFloat (String tag ) {
1202+ return this .getFloatOrDefault (tag , 0F );
1203+ }
1204+
1205+ public final float getFloatOrDefault (String tag , float defaultValue ) {
11801206 Entry entry = this .getEntry (tag );
1181- return entry == null ? 0F : entry .floatValue ();
1207+ return entry == null ? defaultValue : entry .floatValue ();
11821208 }
11831209
11841210 public final double getDouble (String tag ) {
1211+ return this .getDoubleOrDefault (tag , 0D );
1212+ }
1213+
1214+ public final double getDoubleOrDefault (String tag , double defaultValue ) {
11851215 Entry entry = this .getEntry (tag );
11861216 return entry == null ? 0D : entry .doubleValue ();
11871217 }
@@ -2641,26 +2671,6 @@ public final <T, U> void forEach(
26412671 }
26422672 }
26432673
2644- @ Override
2645- public final Object getObject (String tag ) {
2646- return this .get (tag );
2647- }
2648-
2649- @ Override
2650- public final boolean getBoolean (String tag ) {
2651- Object result = this .get (tag );
2652- if (result == null ) return false ;
2653-
2654- if (result instanceof Boolean ) {
2655- return (Boolean ) result ;
2656- } else if (result instanceof Number ) {
2657- Number number = (Number ) result ;
2658- return (number .intValue () != 0 );
2659- } else {
2660- return true ;
2661- }
2662- }
2663-
26642674 @ Override
26652675 public final TagMap .Entry getAndSet (String tag , Object value ) {
26662676 Object prior = this .put (tag , value );
@@ -2710,55 +2720,106 @@ public final TagMap.Entry getAndRemove(String tag) {
27102720 }
27112721
27122722 @ Override
2713- public final double getDouble (String tag ) {
2723+ public final Object getObject (String tag ) {
2724+ return this .get (tag );
2725+ }
2726+
2727+ @ Override
2728+ public final boolean getBoolean (String tag ) {
2729+ return this .getBooleanOrDefault (tag , false );
2730+ }
2731+
2732+ @ Override
2733+ public final boolean getBooleanOrDefault (String tag , boolean defaultValue ) {
2734+ Object result = this .get (tag );
2735+ if (result == null ) {
2736+ return defaultValue ;
2737+ } else if (result instanceof Boolean ) {
2738+ return (Boolean ) result ;
2739+ } else if (result instanceof Number ) {
2740+ Number number = (Number ) result ;
2741+ return (number .intValue () != 0 );
2742+ } else {
2743+ // deliberately doesn't use defaultValue
2744+ return true ;
2745+ }
2746+ }
2747+
2748+ @ Override
2749+ public double getDouble (String tag ) {
2750+ return this .getDoubleOrDefault (tag , 0D );
2751+ }
2752+
2753+ @ Override
2754+ public final double getDoubleOrDefault (String tag , double defaultValue ) {
27142755 Object value = this .get (tag );
2715- if (value instanceof Number ) {
2756+ if (value == null ) {
2757+ return defaultValue ;
2758+ } else if (value instanceof Number ) {
27162759 return ((Number ) value ).doubleValue ();
27172760 } else if (value instanceof Boolean ) {
27182761 return ((Boolean ) value ) ? 1D : 0D ;
27192762 } else {
2763+ // deliberately doesn't use defaultValue
27202764 return 0D ;
27212765 }
27222766 }
27232767
27242768 @ Override
27252769 public final long getLong (String tag ) {
2770+ return this .getLongOrDefault (tag , 0L );
2771+ }
2772+
2773+ public final long getLongOrDefault (String tag , long defaultValue ) {
27262774 Object value = this .get (tag );
27272775 if (value == null ) {
2728- return 0L ;
2776+ return defaultValue ;
27292777 } else if (value instanceof Number ) {
27302778 return ((Number ) value ).longValue ();
27312779 } else if (value instanceof Boolean ) {
27322780 return ((Boolean ) value ) ? 1L : 0L ;
27332781 } else {
2782+ // deliberately doesn't use defaultValue
27342783 return 0L ;
27352784 }
27362785 }
27372786
27382787 @ Override
27392788 public final float getFloat (String tag ) {
2789+ return this .getFloatOrDefault (tag , 0F );
2790+ }
2791+
2792+ @ Override
2793+ public final float getFloatOrDefault (String tag , float defaultValue ) {
27402794 Object value = this .get (tag );
27412795 if (value == null ) {
2742- return 0F ;
2796+ return defaultValue ;
27432797 } else if (value instanceof Number ) {
27442798 return ((Number ) value ).floatValue ();
27452799 } else if (value instanceof Boolean ) {
27462800 return ((Boolean ) value ) ? 1F : 0F ;
27472801 } else {
2802+ // deliberately doesn't use defaultValue
27482803 return 0F ;
27492804 }
27502805 }
27512806
27522807 @ Override
27532808 public final int getInt (String tag ) {
2809+ return this .getIntOrDefault (tag , 0 );
2810+ }
2811+
2812+ @ Override
2813+ public final int getIntOrDefault (String tag , int defaultValue ) {
27542814 Object value = this .get (tag );
27552815 if (value == null ) {
2756- return 0 ;
2816+ return defaultValue ;
27572817 } else if (value instanceof Number ) {
27582818 return ((Number ) value ).intValue ();
27592819 } else if (value instanceof Boolean ) {
27602820 return ((Boolean ) value ) ? 1 : 0 ;
27612821 } else {
2822+ // deliberately doesn't use defaultValue
27622823 return 0 ;
27632824 }
27642825 }
0 commit comments