728x90
728x90

제네릭 4

Effective Java 3/E - 5장 제네릭 - 2

30. 이왕이면 제네릭 메서드로 만들라 메서드도 제네릭 메서드로 생성이 가능하다. 다음과 같은 정적 유틸리티 메서드가 제네릭 메서드의 대표적인 예시다. 타입 매개변수들을 선언하는 매개변수 목록은 메서드의 제한자와 반환 타입 사이에 위치한다. public static int binarySearch(List, Object>)를 사용하는데, Map 자체가 아닌 Key에 와일드카드 타입을 사용하고 있어서, 아무 타입이나 넣을 수 있다. 즉, 모든 키가 서로 다른 매개변수화 타입으로, 다양한 타입을 지원할 수 있다. Object인 Value - 모든 값이 Key로 명시한 타입임을 보장하지 않음 getFavorite의 type.cast Value는 Object이나 실제 반환은 T가 되어야 하므로, cast를 수행 ..

C++] 일반화와 템플릿

template 키워드를 사용하면 중복함수들을 일반화시킨 특별한 함수 생성이 가능하다.이를 템플릿함수(template function) 혹은 제네릭함수(generic function)라고 한다.C++에서의 템플릿은 함수와 클래스 코드를 일반화시키는 도구 템플릿 함수나 클래스를 작성할 경우,template이란 키워드를 사용하여 로 제네릭 타입 T를 선언한다. 중복함수를 템플릿화하는 과정의 역과정을 구체화라 하며,컴파일러는 함수의 호출문을 컴파일하는 경우 구체화를 통해구체적인 함수의 소스코드를 생성해내며, 이를 구체화된 함수라 한다. #include using namespace std; class Circle { int radius; public: Circle(int radius = 1) { this->ra..

C#] 제네릭(Generic) - 2

### 제네릭 ## 파생 제네릭 형식도 제네릭이 아닌 클래스처럼 파생 가능.제네릭 클래스를 기반으로 삼아 파생 클래스 정의 시, 기반 클래스의 형식 매개변수를 열린 채로 남겨두는 것이 가능함. 12class Stack {}class SpecialStack : Stack {}cs 구체적 형식을 지정해 제네릭 형식 매개변수를 닫을 수도 있으며, 파생 형식에서 새로운 형식 매개변수를 도입할 수도 있음. 1234class IntStack : Stack {} class List {}class KeyedList : List {}cs 엄밀히 말해 한 파생 형식의 모든 형식 매개변수는 새로 도입된 것임. ## 자신을 참조하는 제네릭 형식 파생 형식이 기반 형식의 형식 매개변수를 닫을 때, 파생 형식 자신을 형식 인수로..

C#] 제네릭(Generic) - 1

### 제네릭(Generic) 여러 형식들에서 재사용할 수 있는 코드를 작성하기 위한 메커니즘 중 하나로, 자리표(placehodler)에 해다하는 형식들을 담은 템플릿(template)을 통해 재사용성을 표현함.상속에 비해 형식 안전성이 증가하고 casting, boxing이 줄어듦. ## 형식 형식 매개변수(type parameter)들을 선언하여 사용하며, 이는 실제 형식들이 대신할 자리를 표시하는 자리표에 해당함.형식 매개변수는 관례적으로 T를 이용하며, 형식 매개변수가 여러 개인 경우, T로 시작하면서 명확히 구분할 수 있는 이름을 붙여 매개변수를 사용함.실제 형식은 형식 인수(type argument)라고 부름. ex) Stack 123456789101112public class Stack{ ..

728x90