Replies: 1 comment
-
당연히 클래스, 인터페이스 뿐만 아니라 메서드 또한 로 타입으로 입력 매개변수, 리턴을 구현한다면
가 발생할 수 있으니 이번 아이템을 참고로 메서드를 구현해야하는 상황에서도 제네릭을 적용해 더 좋은 코드 작성을 위해 활용하도록 하겠습니다. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
아이템 30. 이왕이면 제네릭 메서드로 만들어라
Summary
명시적으로 형변환해야 하는 메서드보다 제네릭 메서드가 더 안전하며 사용하기 쉽다.
형변환을 해줘야 하는 기존 메서드를 제네릭하게 만들어 기존 클라이언트는 그대로 두고 새로운 사용자에게 편리함을 준다.
0. 아이템 소개
제네릭 타입(아이템 29)에 연장하여 가능하면 메서드도 제네릭으로 만들어라 는 내용입니다.
제네릭 메서드를 사용했을 때 이점과 활용 예시를 보겠습니다.
1. 제네릭 메서드
제네릭 메서드란?
제네릭이란?
데이터 타입을 일반화하는 것을 의미한다.타입 파라미터란?
Collections의 `알고리즘` 메서드(binarySearch, sort 등) 는 모두 제네릭이다.
Java Docs
1.1 문제가 있는 메서드
위와 같이 코드를 작성하면 컴파일은 되지만 경고가 발생한다.
경고를 없애려면 이 메서드를 타입 안전하게 만들어야 한다.
→ 제네릭 메서드로 수정!!!
1.2 제네릭 메서드 작성법
(타입 파라미터들을 선언하는) 타입 파라미터 목록은 메서드의 접근 제어자와 반환 타입 사이에 온다.
<E>
이고 반환 타입은Set<E>
이다.타입 파라미터의 명명 규칙은 제네릭 타입과 같다.
타입 파라미터 명명 규칙
자주 사용하는 타입 인자
2. 제네릭 메서드 활용
제네릭 싱글턴 팩터리
에 대해 살펴보자.2.1 불변 객체를 여러 타입으로 활용하는 경우
제네릭은 런타임에 타입 정보가 소거(아이템28)되므로 하나의 객체를 어떤 타입으로든 매개변수화할 수 있다.
그러나 요청한 타입 매개 변수에 맞게 매번 그 객체의 타입을 바꿔주는 정적 팩터리를 만들어야 한다. 이 패턴을
제네릭 싱글턴 팩터리
라 한다.제네릭 싱글턴 팩터리란?
2.2 항등함수(identity function)를 담은 클래스를 만드는 경우
2.3 재귀적 타입 한정(recursive type bound)의 사용
그 제약을
<E extends Comparable <E>>
라고 표현한다.<E extends Comparable <E>>
는모든 타입 E는 자신과 비교할 수 있다
라는 뜻으로 해석한다.Reference
https://medium.com/depayse/kotlin-제네릭-generic-1-정의-타입-파라미터-제약-3bc8cf759cb3
https://blog.naver.com/PostView.naver?blogId=zzang9ha&logNo=222059024135&redirect=Dlog&widgetTypeCall=true&directAccess=false
https://jyami.tistory.com/99
https://velog.io/@tamxt4047/recirsove-type-bound
Beta Was this translation helpful? Give feedback.
All reactions