남극
Java Generics 본문
Generics는?
우선 제네릭스는 JDK 1.5 버전에서 처음 나왔으며 그 당시에는 선택적으로 사용하는 방식으로 사용되었으나 요즘 API들을 보면
제네릭스를 모른다면 이해하기가 힘들 정도로 많이 쓰입니다
Generics 란?
제네릭스의 정의는 "다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능"
이라고 정의되어 있습니다. 이게 만 보고는 이해가 쉽지 않죠. 그래서 예시를 보여드리겠습니다
ArrayList<String> list = new ArrayList<String>();
이 ArrayList라는 컬렉션 클래스는 다양한 종류의 객체를 담을 수도 있지만 보통은 한 가지의 객체의 값을 넣어주는 경우가 많습니다
이 클래스에서 값을 꺼낼 때마다 작업을 해주는 것은 상당히 불편합니다.
이럴 때 사용해서 타입을 지정해 줄 수 있는 것이 제네릭스입니다
Generic Class
이 제네릭 타입은 메서드와 클래스에 사용을 할 수 있습니다
우선 클래스에 사용을 하여 설명을 해보겠습니다
class Car<T>{
T speed;
void setRun(T speed){
this.speed = speed;
}
void getRun(T speed){
return speed;
}
}
이렇게 구성된 Car 클래스가 있습니다
그리고 이 Car 클래스를 인스턴스 시켜줍니다
Car<Integer> 자동차 = new Car<Integer>();
자동차.setRun(100); // 성공
자동차.setRun("100"); // 실패
int start = (int)자동차.setRun(100); //이미 int 형
인스턴스 시켜준 소스코드를 보시면 Car 객체를 Integer형으로 생성시켰습니다
제가 주석을 옆에 달아 두었는데 그 이유는 밑에 있는 소스코드를 보시면 이해가 되실 것입니다
class Car<Integer>{
Integer speed;
void setRun(Integer speed){
this.speed = speed;
}
void getRun(Integer speed){
return speed;
}
}
여기서 사용되는 "T"나 "E", "K", "V"에 대해서도 알아보도록 하겠습니다.
T: type의 첫 글자에서 따온 것으로 타입변수는 자기 자신이 설정해줄 수 있다.
E: element의 첫 글자에서 따와서 사용한 것이다
K,V: 대표적인 예로 Map<K,V>가 있는데 Key, Valeu에서 따온 것이다
T라는 이름으로 사용할 수 있지만 상황에 맞게 쓰는 것이 더 좋습니다
'JAVA > Data Structure' 카테고리의 다른 글
Java Map (0) | 2020.03.08 |
---|---|
Java wildcard (0) | 2020.03.08 |
JAVA Queue (0) | 2020.03.08 |
Java Stack (0) | 2020.03.08 |
Iterator - Java (0) | 2020.02.26 |
Comments