-
요약
비검사 경고란?
비검사 경고의 예시제네릭에서 새로 생성하는 인스턴스에 타입 매개변수를 명시하지 않으면 IDE 에서는 다음과 같이 표시한다. 노란색으로 형광펜이 칠해져 있는 곳에 마우스 커서를 갖다 대면 다음과 같이 안내 메시지를 알려준다. 가능한 모든 비검사 경고를 제거하면 타입 안정성이 보장되므로 이 경우 다이아몬드 연산자( 경고를 숨길 수 있는 꼼수
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
정리 감사합니다 ㅎㅎ 코드를 작성하다 보면 비검사 경고를 확인함에도 당장 귀찮다는 이유로 실행만 잘 되면 제거하지 않고 넘어가는 경우가 있었습니다. |
Beta Was this translation helpful? Give feedback.
-
깔끔한 정리 덕분에 아이템 이해하는데 도움이 많이 됐습니다~! package org.ngrinder.common.util;
public abstract class TypeConvertUtils {
@SuppressWarnings("unchecked")
public static <T> T cast(Object object) {
return (T) object;
}
} 이미지의 |
Beta Was this translation helpful? Give feedback.
깔끔한 정리 덕분에 아이템 이해하는데 도움이 많이 됐습니다~!
특히 타입 캐스팅을 할때 해당 경고가 많이 발생하던데, 저도 확실히 타입이 보장되는 상황에서는 사용해야겠네요!
실제 사용사례가 있을까 궁금해서 뒤져보다가 ngrinder 라는 Naver 의 오픈소스에서도 활용하고있는걸 찾아서 공유합니다.
(https://github.com/naver/ngrinder/blob/develop/ngrinder-core/src/main/java/org/ngrinder/common/util/TypeConvertUtils.java)
(cast 메서드 활용)
이미지의
resolveReference("request")
는 Object 를 반환하는데, cast 메서드는 반환타입에 맞게 변환해줍니다.이런 유틸로 캐스팅을 하면 타입 캐스팅 코드가 없어도 되고, Warning 도 모두 제거해주는 장점이 있을 것 같습니다.
대신 남용한다면 타입 안정성을 해칠 수 있으니 말씀하신 것 처럼 확실한 상황에만 사용하는게 좋겠네요..!