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

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

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

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

List<Object> list= new ArrayList <>(Arrays.asList(12345));
BigDecimal bdnum = (BigDecimal) list.get(0);
System.out.println(bdnum);

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

ListはObject型ですが、Integer型の値を保持しており、取り出そうとするときBigDecimal型にキャストしようとすることが原因です。

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

List<Object> list= new ArrayList <>(Arrays.asList(12345));
BigDecimal bdnum = BigDecimal.valueOf((Integer)list.get(0));
System.out.println(bdnum);

//実行結果
1

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

●まとめ

  • BigDecimal bdnum = (BigDecimal) list.get(index) ⇒NG
  • BigDecimal bdnum = BigDecimal.valueOf((Integer)list.get(index));⇒OK

 

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

コメントを残す

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

PAGE TOP