컴공생의 다이어리
[자바, Java] 제네릭(Generic) 본문
제네릭(Generic)
제네릭은 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 나중에 해당 클래스를 사용할 때 지정할 수 있도록 선언한다.
제네릭의 장점
1. 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지
2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없음(즉, 관리하기가 편함)
3. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아짐
보통 제네릭은 위의 표의 타입들이 많이 사용된다. 무조건 위처럼 사용해야 하는 것은 아니다. 하지만 암묵적인 규칙이기 때문에 저런 형식으로 사용해주는 것이 좋다.
제네릭의 선언 및 생성
자바에서 제네릭은 클래스와 메서드에만 아래와 같은 방법으로 선언할 수 있다.
class MyArray<T> {
T element;
void setElement(T element) { this.element = element; }
T getElement() { return element; }
}
위의 예제에서 사용된 'T'를 타입 변수(type variable)라고 하며, 임의의 참조형 타입을 의미한다. 여러 개의 타입 변수는 쉼표(,)로 구분하여 명시할 수 있다. 타입 변수는 클래스에서뿐만 아니라 메소드의 매개변수나 반환값으로도 사용할 수 있다. 위와 같이 선언된 제네릭 클래스를 생성할 때에는 타입 변수 자리에 사용할 실제 타입을 명시해야 한다.
실제 사용할 때는 아래와 같이 원하는 타입을 적용해 사용해 주면 된다.
MyArray<Integer> Arr1 = new MyArray<Integer>();
MyArray<String> Arr2 = new MyArray<String>();
그리고 Java SE 7부터는 인스턴스 생성 시 타입을 추정할 수 있는 경우에는 아래처럼 타입을 생략할 수 있다.
MyArray<Integer> Arr1 = new MyArray<>();
MyArray<String> Arr2 = new MyArray<>();
https://st-lab.tistory.com/153
http://tcpschool.com/java/java_generic_concept
'Development > Java' 카테고리의 다른 글
[자바, Java] 람다식(Lambda expression) (0) | 2021.09.05 |
---|---|
[자바, Java] Iterator 반복자 (0) | 2021.09.04 |
[자바, Java] 문자열 - String, StringBuffer, StringBuilder (0) | 2021.09.02 |
[자바, Java] 문자열(String) 비교 - ==과 equals() 차이 (0) | 2021.09.01 |
[자바, Java] 인터페이스(interface)의 상속 (0) | 2021.08.31 |