programing

자바 수학bigInteger를 java.lang에 캐스팅할 수 없습니다.정수

bestprogram 2023. 9. 4. 20:27

자바 수학bigInteger를 java.lang에 캐스팅할 수 없습니다.정수

저는 다음과 같은 예외를 받고 있습니다.

원인:

자바.java.javaClassCastException: java.math입니다.bigInteger를 java.lang에 캐스팅할 수 없습니다.정수

다음과 같은 코드로

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);
}

이 선에서

Integer grandChildCount = (Integer) result[1];

누구 아는 사람 있어요?

사용할 수 있는 항목:

Integer grandChildCount = ((BigInteger) result[1]).intValue();

아니면, 아마도.Number두 가지 모두를 포함하여Integer그리고.BigInteger가치.

자바독에서 보듯,BigInteger의 하위 클래스가 아닙니다.Integer:

java.lang.Object                      java.lang.Object
   java.lang.Number                       java.lang.Number
      java.math.BigInteger                    java.lang.Integer

그래서 캐스팅이BigInteger로.Integer불가능합니다.

자바 원시 요소의 주조는 약간의 변환을 할 것입니다(예: 주조와 같은).double로.int) 유형의 주조는 클래스를 변환하지 않습니다.

사용해 볼 수 있습니다.

((BigDecimal) volume).intValue();

사용합니다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

데이터베이스의 열은 다음과 같습니다.DECIMAL당신은 그것을 처리해야 합니다.BigInteger조금도 아닌Integer그렇지 않으면 숫자를 잃어버리는 것입니다.또는 열을 다음으로 변경합니다.int.

언급URL : https://stackoverflow.com/questions/9510982/java-math-biginteger-cannot-be-cast-to-java-lang-integer