openJPA (조금 오래된 버전 1.2)를 사용하고 있는데, 내가 캐스팅 할 때마다 경고 메시지가 나타납니다. query.getResultList()
.안전하지 않은 타입 : Foo에서 Bar 로의 체크되지 않은 캐스트. JPA stuff
// @SuppressWarnings("unchecked") I DON'T WANT TO DO THIS HERE
public <T> List<T> findByQuery(String queryString) {
myEntityManager.createQuery(queryString);
@SuppressWarnings("unchecked") // I WANT TO DO IT HERE
return (List<T>)query.getResultList();
}
내가 할 수있는 :
을 나는 그래서 특정 경고 제거 할 수 이전 라인에@SuppressWarnings("unchecked")
를 사용하지만 다음 예제와 같이 목록을 반환해야 할 때 나는 동일한 기능을 수행 할 수 없습니다
...
@SuppressWarnings("unchecked")
List<T> result = query.getResultList();
return result;
}
그러나 sonar은 목록에 변수를 저장하지 말고 바로 반환해야한다고 불평합니다. 내 최고의 옵션은 무엇입니까?
첫 번째 스 니펫에 값을 지정하지 않고 메서드에서 값을 반환 할 때 @SuppressWarnings을 메서드 자체에 추가해야합니다. 당신은 "나 여기 이걸하고 싶지 않다"라는 소나 위반이나 첫 번째 코드 스 니펫으로 살아야만한다. –
소나기를 속일 때 더러운 해결책이있다. (나는 이것을하는 것을 권장하지 않지만). "result.size();"를 추가하십시오. 결과를 반환하기 전에 소나 위반을 제거하십시오. 메서드 수준에서 주석이있는 첫 번째 스 니펫에 고정하는 것이 좋습니다. –
Checkstyle을 사용하지 않습니까? checkstyle 오류를 비활성화 할 수 있습니다. –