• R/O
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisión1315 (tree)
Tiempo2018-03-13 20:31:28
Autort_nakayama1971

Log Message

(empty log message)

Cambiar Resumen

Diferencia incremental

--- branches/20170922/framework/fwBase/src/core/util/NumberUtil.java (revision 1314)
+++ branches/20170922/framework/fwBase/src/core/util/NumberUtil.java (revision 1315)
@@ -12,6 +12,7 @@
1212
1313 /**
1414 * 数値ユーティリティ
15+ *
1516 * @author Tadashi Nakayama
1617 */
1718 public final class NumberUtil {
@@ -28,7 +29,8 @@
2829
2930 /**
3031 * BigDecimal用同一値判断
31- * equals比較がでず、かつcompareToの引数がNULL時エラーになるため。
32+ * equals比較ができず、かつcompareToの引数がNULL時エラーになるため。
33+ *
3234 * @param val1 BigDecimal
3335 * @param val2 BigDecimal
3436 * @return 同一の場合 true を返す。
@@ -39,6 +41,7 @@
3941
4042 /**
4143 * セパレータ除去
44+ *
4245 * @param val 文字列
4346 * @return 除去後文字列
4447 */
@@ -48,39 +51,43 @@
4851
4952 /**
5053 * 加算
54+ *
5155 * @param vals Integer配列
5256 * @return 合計
5357 */
5458 public static Integer add(final Integer... vals) {
5559 return Optional.ofNullable(vals).flatMap(
56- v -> Stream.of(v).filter(Objects::nonNull).reduce(Integer::sum)
60+ v -> Stream.of(v).filter(Objects::nonNull).reduce(Integer::sum)
5761 ).orElse(null);
5862 }
5963
6064 /**
6165 * 加算
66+ *
6267 * @param vals Long配列
6368 * @return 合計
6469 */
6570 public static Long add(final Long... vals) {
6671 return Optional.ofNullable(vals).flatMap(
67- v -> Stream.of(v).filter(Objects::nonNull).reduce(Long::sum)
72+ v -> Stream.of(v).filter(Objects::nonNull).reduce(Long::sum)
6873 ).orElse(null);
6974 }
7075
7176 /**
7277 * 加算
78+ *
7379 * @param vals BigDecimal配列
7480 * @return 合計
7581 */
7682 public static BigDecimal add(final BigDecimal... vals) {
7783 return Optional.ofNullable(vals).flatMap(
78- v -> Stream.of(v).filter(Objects::nonNull).reduce(BigDecimal::add)
84+ v -> Stream.of(v).filter(Objects::nonNull).reduce(BigDecimal::add)
7985 ).orElse(null);
8086 }
8187
8288 /**
8389 * 乗算
90+ *
8491 * @param vals BigDecimal配列
8592 * @return 乗算結果
8693 */
@@ -92,23 +99,20 @@
9299
93100 /**
94101 * 減算
102+ *
95103 * @param base 引き元数
96104 * @param vals BigDecimal配列
97105 * @return 減算結果
98106 */
99107 public static BigDecimal subtract(final BigDecimal base, final BigDecimal... vals) {
100- return Optional.ofNullable(base).map(
101- b -> {
102- Optional.ofNullable(vals).ifPresent(
103- v -> Stream.of(v).filter(Objects::nonNull).forEach(b::subtract)
104- );
105- return b;
106- }
107- ).orElse(null);
108+ return Optional.ofNullable(base).flatMap(
109+ b -> Optional.ofNullable(add(vals)).map(b::subtract)
110+ ).orElse(base);
108111 }
109112
110113 /**
111114 * Long化
115+ *
112116 * @param val 文字列
113117 * @return Long
114118 */
@@ -118,23 +122,18 @@
118122
119123 /**
120124 * Long化
125+ *
121126 * @param val 文字列
122127 * @param def デフォルト値
123128 * @return Long
124129 */
125130 public static Long toLong(final String val, final Long def) {
126- if (!Objects.toString(val, "").isEmpty()) {
127- try {
128- return Long.valueOf(removeSeparator(val));
129- } catch (final NumberFormatException ex) {
130- LogManager.getLogger().info(ex.getMessage());
131- }
132- }
133- return def;
131+ return Optional.ofNullable(toBigDecimal(val, null)).map(BigDecimal::longValue).orElse(def);
134132 }
135133
136134 /**
137- * Long値化
135+ * Long化
136+ *
138137 * @param num Number
139138 * @return Long値
140139 */
@@ -144,19 +143,20 @@
144143
145144 /**
146145 * Long化
146+ *
147147 * @param num Number
148148 * @param def デフォルト値
149149 * @return Long
150150 */
151151 public static Long toLong(final Number num, final Long def) {
152- if (Long.class.isInstance(num)) {
153- return Long.class.cast(num);
154- }
155- return Optional.ofNullable(num).map(n -> Long.valueOf(n.longValue())).orElse(def);
152+ return Optional.ofNullable(num).map(
153+ n -> Long.class.isInstance(n) ? Long.class.cast(n) : Long.valueOf(n.longValue())
154+ ).orElse(def);
156155 }
157156
158157 /**
159158 * int化
159+ *
160160 * @param val 文字列
161161 * @param def デフォルト値
162162 * @return int
@@ -167,6 +167,7 @@
167167
168168 /**
169169 * Integer化
170+ *
170171 * @param val 文字列
171172 * @return Integer
172173 */
@@ -176,23 +177,18 @@
176177
177178 /**
178179 * Integer化
180+ *
179181 * @param val 文字列
180182 * @param def デフォルト値
181183 * @return Integer
182184 */
183185 public static Integer toInteger(final String val, final Integer def) {
184- if (!Objects.toString(val, "").isEmpty()) {
185- try {
186- return Integer.valueOf(removeSeparator(val));
187- } catch (final NumberFormatException ex) {
188- LogManager.getLogger().info(ex.getMessage());
189- }
190- }
191- return def;
186+ return Optional.ofNullable(toBigDecimal(val, null)).map(BigDecimal::intValue).orElse(def);
192187 }
193188
194189 /**
195- * Integer値化
190+ * Integer化
191+ *
196192 * @param num Number
197193 * @return Integer値
198194 */
@@ -201,20 +197,21 @@
201197 }
202198
203199 /**
204- * Integer値化
200+ * Integer化
201+ *
205202 * @param num Number
206203 * @param def デフォルト値
207204 * @return Integer値
208205 */
209206 public static Integer toInteger(final Number num, final Integer def) {
210- if (Integer.class.isInstance(num)) {
211- return Integer.class.cast(num);
212- }
213- return Optional.ofNullable(num).map(n -> Integer.valueOf(n.intValue())).orElse(def);
207+ return Optional.ofNullable(num).map(
208+ n -> Integer.class.isInstance(n) ? Integer.class.cast(n) : Integer.valueOf(n.intValue())
209+ ).orElse(def);
214210 }
215211
216212 /**
217213 * BigDecimal化(全角数字等は変換しない。)
214+ *
218215 * @param val 文字列
219216 * @return BigDecimal
220217 */
@@ -224,6 +221,7 @@
224221
225222 /**
226223 * BigDecimal化(全角数字等は変換しない。)
224+ *
227225 * @param val 文字列
228226 * @param def デフォルト値
229227 * @return BigDecimal
@@ -240,7 +238,8 @@
240238 }
241239
242240 /**
243- * BigDecimal値化
241+ * BigDecimal化
242+ *
244243 * @param num Number
245244 * @return Integer値
246245 */
@@ -249,20 +248,21 @@
249248 }
250249
251250 /**
252- * BigDecimal値化
251+ * BigDecimal化
252+ *
253253 * @param num Number
254254 * @param def デフォルト値
255255 * @return Integer値
256256 */
257257 public static BigDecimal toBigDecimal(final Number num, final BigDecimal def) {
258- if (BigDecimal.class.isInstance(num)) {
259- return BigDecimal.class.cast(num);
260- }
261- return num != null ? new BigDecimal(num.toString()) : def;
258+ return Optional.ofNullable(num).map(n -> BigDecimal.class.isInstance(n)
259+ ? BigDecimal.class.cast(n) : new BigDecimal(num.toString())
260+ ).orElse(def);
262261 }
263262
264263 /**
265264 * Numberオブジェクト化
265+ *
266266 * @param <T> Numberジェネリックス
267267 * @param val 文字列
268268 * @param cls Numberクラス
@@ -269,14 +269,12 @@
269269 * @return Numberオブジェクト
270270 */
271271 public static <T extends Number> T toNumber(final String val, final Class<T> cls) {
272- if (val != null) {
273- try {
274- return Factory.construct(
275- Factory.getConstructor(cls, String.class), removeSeparator(val));
276- } catch (final NumberFormatException ex) {
277- LogManager.getLogger().info(ex.getMessage());
278- }
272+ try {
273+ return Factory.construct(
274+ Factory.getConstructor(cls, String.class), removeSeparator(val));
275+ } catch (final NumberFormatException ex) {
276+ LogManager.getLogger().info(ex.getMessage());
277+ return null;
279278 }
280- return null;
281279 }
282280 }