【Java】String cannot be cast to class java.math.BigDecimalのエラー回避

【Java】String cannot be cast to class java.math.BigDecimalのエラー回避

管理人
この記事ではString cannot be cast to class java.math.BigDecimalのエラーと回避方法について解説します。

「String cannot be cast to class java.math.BigDecimal」String型はBigdecimal型にキャストできません。という意味で次のような実装を行うとエラーとなります。

Map<String, Object> map = new HashMap<>();
map.put("キー値1", "1");
map.put("キー値2", "2");
BigDecimal bd = (BigDecimal) map.get("キー値1");
System.out.println(bd);

// 実行結果
Exception in thread "main" java.lang.ClassCastException: 
class java.lang.String cannot be cast to class java.math.BigDecimal 
(java.lang.String and java.math.BigDecimal are in module java.base of loader 'bootstrap')

Map内ではString型で値をセットしており、BigDecimal型で取り出そうとすることが原因です。

String型をBigDecimal型として取り出すには以下のようにすれば取り出すことができます

Map<String, Object> map = new HashMap<>();
map.put("キー値1", "1");
map.put("キー値2", "2");
BigDecimal bd = new BigDecimal((String) map.get("キー値1"));
System.out.println(bd);

//実行結果
1

値を取り出すことができました。

●まとめ

  • BigDecimal bd = (BigDecimal) map.get(key); ⇒NG
  • BigDecimal bd = new BigDecimal((String) map.get(key)); ⇒OK

 

管理人
Javaの記事の一覧はJava にまとめてあります

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP