kkkkkkkkkkkk
kkkkk
kkkkkkkkkkkk
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS & OS
    • Algorithms
    • Laguage
    • Book
      • 객체지향의 사실과 오해
      • Effective Java
      • Spring boot 와 AWS로 혼자 구현하는 ..
      • 도메인 주도 계발 시작하기
    • DB
    • Spring
    • Spring Boot
    • JPA
    • Git
    • Clean Code
    • HTTP

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 결합도
  • 객체지향 프로그래밍
  • 책임
  • 역할
  • 응집도
  • 설계 원칙

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
kkkkkkkkkkkk

kkkkk

Book/Effective Java

[Item 27] 비검사 경고를 제거하라

2022. 8. 6. 17:15

제네릭을 사용하기 시작하면 수많은 컴파일러 경고들을 마주치게 되는데 이러한 경고들은 가능한 많이 제거하는 것이 좋다.

경고들을 모두 제거 한다면, 그 코드는 타입의 안정성이 보장된다.

비검사 경고는 쉽게 제거할 수 있다.

List<String> list = new ArrayList();

컴파일 경고가 나오는 코드다.

List<String> list = new ArrayList<>();

제네릭 타입으로 인스턴스를 생성하고 뒤에 다이아몬드 연산자를 생성해야 한다.

경고를 제거할 수 없지만 타입이 안전하다고 보장되면 경고를 숨겨라

@SuppressWarnings("unchecked")으로 경고를 숨기자.

단, 타입 안정성을 검증하지 않고 경고를 숨기면 절대 안된다. 해당 코드는 경고 없이 컴파일되지만, 런타임 시 여전히 ClassCastException을 던질 수 있다.

@SuppressWarnings 에노테이션 주의사항

  1. 가능한 좁은 범위로 적용

해당 에노테이션은 선언 범위가 넓기에 최대한 좁은 범위 즉, 변수나 메서드 생성자 등에 선언 해야 한다.

리턴문에는 선언 할 수 없어 지역 변수를 생성하여 선언하면 된다.

범위를 크게 잡게 되면 놓치는 부분이 있을 수 있으니 전체 범위에 선언하지마라.

  1. 항상 주석을 남겨라

코드의 경고를 무시해도 안전한 이유를 항상 주석으로 남겨야 한다.

다른 사람이 코드를 이해하는데 도움이 되며 다른 사람이 그 코드를 잘못 수정하여 타입 안정성을 잃는 상황을 줄여준다.

'Book > Effective Java' 카테고리의 다른 글

[Item 31] 한정적 와일드카드를 사용해 API 유연성을 높이라  (0) 2022.08.31
[Item 30] 이왕이면 제네릭 메서드로 만들라  (0) 2022.08.30
[Item 29] 이왕이면 제네릭 타입으로 만들라  (0) 2022.08.18
[Item 28] 배열보다는 리스트를 사용하라  (0) 2022.08.18
[Item 26] 로 타입(Raw Type)은 사용하지 말라  (0) 2022.08.05
[Item 25] 톱레벨 클래스는 한 파일에 하나만 담으라  (0) 2022.08.05
[Item 24] 멤버 클래스는 되도록 static 으로 만들라  (0) 2022.07.27
[Item 23] 태그 달린 클래스보다 클래스 계층구조를 활용하라  (0) 2022.07.27
    'Book/Effective Java' 카테고리의 다른 글
    • [Item 29] 이왕이면 제네릭 타입으로 만들라
    • [Item 28] 배열보다는 리스트를 사용하라
    • [Item 26] 로 타입(Raw Type)은 사용하지 말라
    • [Item 25] 톱레벨 클래스는 한 파일에 하나만 담으라
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바