제네릭의 이해
신발을 만드는 공장을 가정해보자. 신발을 만들기 위한 틀이 있을 것이고 색을 달리해서 다양한 신발을 만들 수 있을 것이다. 여기서 틀이 제네릭과 같은 개념이고, 색은 자료형과 같다.
제네릭 이란?
클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법
제니릭 이전의 코드
class Apple{
public String toString(){
return "I'm an apple";
}
}
class Orange{
public String toString(){
return "I'm an orange";
}
}
class Box{
private Object obj;
public void set(Object o){
obj=o;
}
public Object get(Object o){
return obj;
}
}
제네릭 이전 코드의 단점은 프로그래머가 형변환을 직접해야하는 것이다. 만약 프로그래머가 실수로 형변환을 하지 않는다면 코드의 안정성이 떨어질 것이다. 컴파일러는 형변환에 관여하지 않기 때문에 최악의 경우에는 오류라는 사실을 인지하지 못한채 넘어갈 수 있다.
오류 발견의 첫 번째 안전 장치는 컴파일 에러이다. 프로그래머가 실수로 놓쳐도 컴파일러가 오류를 알려준다. 두 번째 안전 장치는 예외 처리문이다. 최악의 경우는, 컴파일 과정과 예외 처리 과정에서 조차 오류를 발견하지 못할 경우이다. 위의 코드에서는 String 인스턴스를 Apple로 형변환하는 것을 JVM이 예외처리(콘솔 출력)해주지만, 형변환이라도 하지 않았다면, 프로그래머의 실수가 실행 과정에서 조차 발견되지 않았을 것이다. 정말 큰 문제다.
'Programming > Java' 카테고리의 다른 글
JAVA 21(3) 제네릭 1 (0) | 2021.08.13 |
---|---|
JAVA 21(2) 제네릭 1 (0) | 2021.08.13 |
JAVA 20(3) Arrays 클래스 (0) | 2021.08.12 |
JAVA 20(2) Math 클래스 (0) | 2021.08.12 |
JAVA 20(1) wrapper 클래스 (0) | 2021.08.11 |