happyhanj1yeon.log
로그인
happyhanj1yeon.log
로그인
[이펙티브자바] 5-26. 로 타입은 사용하지 말라
한지연
·
2023년 3월 12일
팔로우
0
이펙티브자바
📘 로 타입은 사용하지 말라
📚 제네릭 타입
제네릭 클래스, 제네릭 인터페이스: 클래스와 인터페이스 선언에 타입 매개변수가 쓰인 것
제네릭 클래스와 제네릭 인터페이스를 통들어 제네릭타입이라고 함
각각의 제네릭 타입은 일련의 매개변수화 타입을 정의
ex: List<String>
제네릭 타입을 정의하면 그에 딸린 로타입도 함께 정의됨
로타입: 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을 때
📚 로타입을 사용하면 안 되는 이유
// ex
private
final
Collection
collects
=
.
.
.
;
코드를 사용하면 실제로 다른 타입을 넣어도 아무 오류없이 컴파일되고 실행 됨
로 타입을 쓰면 제네릭이 안겨주는 안전성과 표현력 모두 잃게 됨
❗️ 로타입을 만드는 이유
: 제네릭이 있기 전 코드들과의
호환성
때문
📚 List<Object>
임의 객체를 허용하는 매개변수화 타입
모든 타입을 허용한다는 의사를 컴파일러에 명확히 전달한 것
매개변수로 List를 받는 메서드에 List<String>은 넘길 수 있지만 List<Object>는 넘길 수 없음
📚 와일드카드 타입
타입이 들어갈 자리에
?
를 씀
제네릭 타입을 사용하고 싶지만 실제 타입 매개변수가 무엇인지 신경 쓰고 싶지 않을 때 사용
모종의 타입 객체만 저장할 수 있는 와일드카드 타입
로타입과 달리 안전함
📚 로타입을 사용하는 경우
class 리터얼은 로타입 사용
instanceOf 연산자
런타임에는 제네릭타입 정보가 지워지므로 instanceOf 연산자는 비한정적 와일드가드 타입 이 외의 매개변수화 타입에 적용할 수 없음
한지연
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!
팔로우
이전 포스트
[DB] 맥북 H2 데이터베이스 설치하기
다음 포스트
[자바의 신] 2장 Hello God Of Java
0개의 댓글
댓글 작성