Cod*_*kie 17 java mysql sql postgresql hibernate
我收到以下异常.
引起:
java.lang.ClassCastException:java.math.BigInteger无法强制转换为java.lang.Integer
使用以下代码
List queryResult = query.list();
for (Iterator<Object[]> it = queryResult.iterator(); it.hasNext();) {
Object[] result = it.next();
Integer childId = (Integer) result[0];
Integer grandChildCount = (Integer) result[1];
CompanyNode childNode = childNodes.get(childId);
childNode.setHasChildren(grandChildCount != 0);
childNode.setIsLeaf(grandChildCount == 0);
}
Run Code Online (Sandbox Code Playgroud)
在这条线上
Integer grandChildCount = (Integer) result[1];
Run Code Online (Sandbox Code Playgroud)
有人有任何想法吗?
Ted*_*opp 47
您可以使用:
Integer grandChildCount = ((BigInteger) result[1]).intValue();
Run Code Online (Sandbox Code Playgroud)
或者也许是Number
为了掩盖Integer
和BigInteger
价值观.
And*_*s_D 12
正如我们从javaDoc中看到的那样,BigInteger
它不是以下的子类Integer
:
java.lang.Object java.lang.Object
java.lang.Number java.lang.Number
java.math.BigInteger java.lang.Integer
Run Code Online (Sandbox Code Playgroud)
这就是为什么从铸造的理由BigInteger
来Integer
是不可能的.
转换java基元将进行一些转换(如从转换double
到转换int
),而转换类型永远不会转换类.
你可以试试这个:
((BigDecimal) volume).intValue();
Run Code Online (Sandbox Code Playgroud)
我使用java.math.BigDecimal
转换为int
(原始类型)。
它对我有用。
java.lang.Integer
不是 的超类BigInteger
。双方BigInteger
并Integer
就继承java.lang.Number
,所以你可以转换为java.lang.Number
。
请参阅 java 文档http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Number.html
归档时间: |
|
查看次数: |
104431 次 |
最近记录: |