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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
아이템 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