【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 にまとめてあります