본문 바로가기
프로그래밍 언어

제네릭이란 무엇인가?

by do_ng 2019. 9. 2.

제네릭을 사용하는 이유

1. 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 컴파일 시 미리 강한 타입 체크를 한다.

2. 불필요한 타입 변환은 프로그램 성능에 악영향을 미치게 때문에 타입 변환(casting)을 제거한다.

 

제네릭을 쓰지 않은 경우 

Object Type 으로 모든 객체를 저장할 수는 있지만 Object Type 필드에 "Java"로된 String Type 저장하거나 Object필드에서 값을 읽을 경우에 타입 변환이 발생하면서 프로그램 성능에 악영향을 미칠 뿐만 아니라 일일이 타입 변환을 해줘야 하는 번거로움도 생긴다.

 

제네릭을 썻을 경우

타입 파라미터 T를 사용해서 Object Type을 모두 T로 대체한 후 Box 클래스로 객체를 생성할 때 구체적인 타입으로 변경된다. 아래 코드는 타입 파라미터(T)를 = String Type으로 대체하였는데 set, get메소드를 사용할 때 타입 변환이 일어나지 않는 걸 알 수 있다.

Box클래스로부터 객체를 생성하면 타입 파라미터(T)는 다음과 같이 String Type으로 변경된다.

 

 

타입 파라미터(T)를 Integer Type으로도 변경할 수 있고 그 이외에 다양한 타입들을 넣을 수도 있다.

 

제네릭 메소드

제네릭 메소드 선언방법 : public <타입파라미터,...>리턴타입 메소드명(매개변수,...){. . . .}

제네릭 메소드 호출하기 

결과창 

추가로 궁금한것(int와Integer 차이??)

INT - 원시 자료형 

Integer - 원시 자료형(int,char,long)등을 Wrapper 클래스로 만든것