Contents
- Generic 등장 배경
- Generic
왜 Generic이란 기술이 생겼을까요.
제네릭(generic)이란 클래스가 사용할 데이터의 타입을 외부에서 가져오는 것을 의미합니다.
기술이 사장되지 않고 사용되고있다는 것은 앞서간 사람들이 어떤 문제에 도달했고 그 문제의 해결방안으로써 해당 기술이 제안되었을 것입니다.
generic 또한 마찬가지입니다.
말이 어려우니 간단한 예시를 보여드리겠습니다.
이클립스에서 간단한 java project를 만들어 봅시다.
public class Main {
public static void main(String[] args) {
}
}
이제 새로운 클래스를 하나 만듭니다.
저는 클래스 이름을 MyInteger로 하겠습니다.
public class MyInteger {
Integer i;
MyInteger(Integer i){
this.i = i;
}
void printStuff() {
System.out.println(i);
}
}
위에있는 클래스는 MyInteger로 Integer를 인자로 받아 객체를 생성하는 클래스입니다.
(콘솔에 찍어 보여주는 기능도 있습니다...!)
이번에는 Integer가 아닌 Double을 받아오는 클래스를 만들어 보겠습니다.
public class MyDouble {
Double i;
MyDouble(Double i){
this.i = i;
}
void printStuff() {
System.out.println(i);
}
}
이렇게 Integer와 Double을 다루는 두개의 클래스를 만들었습니다.
그런데 만들고 보니 MyInteger와 MyDouble은 타입이 Integer에서 Double이 된것 말고는 다른 점이 하나도 없습니다.
이러한 상황이 Generic이 탄생하게 된 배경입니다.
이번엔 MyGeneric이라는 이름으로 새로운 클래스를 만들어 보겠습니다.
public class MyGeneric<T> {
T object;
MyGeneric(T object){
this.object= object;
}
void showType() {
System.out.println(object.getClass().getName());
}
}
제네릭을 만들때 클래스 이름 바로 뒤에 <> 표시 후에 안에 이름을 하나 정해줍니다. (몇개 빼면 암거나 가능)
이제 결과를 출력해보록 하겠습니다.
Main문
public class Main {
public static void main(String[] args) {
MyGeneric<Integer> obj = new MyGeneric<>(10);
MyGeneric<Double> obj2 = new MyGeneric<>(11.29);
obj.showType();
obj2.showType();
}
}
실행시켜보면 잘 출력되는 것을 알 수 있습니다.
* 주의
참고로
빨간 원 안에 흔히 사용하는 int double float 같은 기본 타입은 불가능합니다. 언제나 object타입이 와야 됩니다.
제네릭이 등장하게 된 배경 예시를 들어 설명했는데요.
다음 포스팅에서는 이러한 제네릭을 활용하여 하나 이상의 변수를 다루고 제네릭에 들어올 수 있는 타입을 제한하거나 검사하는 방법에 대해 포스팅하도록 하겠습니다.
방문해주셔서 감사합니다.
'아 이게 뭐임!' 카테고리의 다른 글
JSON이 뭐임...!! (HTT...P..?) (0) | 2021.07.30 |
---|---|
Generic 두개 이상의 변수 사용 (0) | 2021.07.29 |
NULL은 특별하다...! (0) | 2021.07.27 |
제어의 역전이 뭐임!! [Inversion of Control] (0) | 2021.07.26 |
DTO랑 VO가 뭐임!! (코드 포함) (0) | 2021.07.25 |