2017-10-09 13 views
-2
public void write(List<? extends Set<DTO>> setOfDTO) 
     throws Exception { 

    if (!setOfDTO.isEmpty()) 
    { 
     Map<BigInteger, String> tempMap = new HashMap<BigInteger, String>(); 
     for (DTO dto : setOfDTO.get(0)) {...} 

흥미로운 부분은 항상 발생하지 않는다. 그래서 컴파일러 버전이나 다른 요인과 관련이 있는지 궁금합니다. 나는 그것이 있어야이 JAR 파일java.lang.ClassCastException : java.util.HashSet가 DTO와 호환되지 않는다

+0

목록에 항상 두 개 이상의 항목이있는 경우에만 나타납니다. setOfDTO에 DTO 객체가 포함되어 있지 않기 때문에 – Jens

+0

"something"이'List >>'을 전달합니다. generics를 올바르게 사용할 때 잡힐 것입니다. 혹시 또는 lib 디렉토리에서 원시 타입을 사용합니까? – Tom

+0

이것은 스프링 배치 프로그램입니다. – crazyProgrammer

답변

0

를 구축 Buildforge (메이븐)을 사용하고 있습니다 :

public void write(List<? extends Set<DTO>> setOfDTO) throws Exception { 
    if (!setOfDTO.isEmpty()) { 
     Map<BigInteger, String> tempMap = new HashMap<BigInteger, String>(); 
     for (Set<DTO> dto : setOfDTO) {...} 
    } 
} 

귀하의 목록에 Set<DTO>하지 DTO 개체를 포함합니다.

+0

그래서 위에서 언급했듯이 항상 발생하지 않기 때문에 내가 사용한 자바 라인이 예외를 발생시키지 않는 시나리오가있을 것입니다. – crazyProgrammer

+0

목록이 비어 있지 않으면 항상 깨질 것입니다 – Benjamin

+0

* "귀하의 목록에는 DTO 개체가 아닌 집합이 포함되어 있습니다."* - OP는이를 인식하고 그로 인해 'for' 루프가 충돌하지 않습니다. – Tom