본문 바로가기

Dev-/Java

제네릭이란

자바 API 도큐먼트를 보면 거의 대부분이 꺽쇠괄호(<>)가 포함되어있습니다.

이 꺽쇠괄호는 제네릭 표현인데, 제네릭이 무엇인지 알아보겠습니다. 


제네릭클래스, 인터페이스, 메서드를 정의할 때 

특정 멤버타입파라미터로 지정할 수 있도록 하는 것을 말합니다.




우선 제네릭을 사용하지 않았을 때를 살펴보겠습니다.

Object 타입, 따라서 모든  타입을 담을 수 있는 Box라는 클래스에 여러 타입의 객체를 담아보겠습니다.


[Box.java]


[Main.java]


Main 클래스를 보시면 주석처리된 부분과 같이 

다소 불필요해 보이는 타입변환이 일어나는 것을 확인할 수 있습니다. 




제네릭을 사용해보겠습니다.

제네릭 멤버를 만들 땐, 해당 멤버명 옆에 <>를 사용파라미터로 지정할 타입을 정해줍니다.


[GenericBox.java]


[Main.java]



Main 클래스에 표시된 부분에서, T를 지정해 주었을 때 실제로 재구성된 GenericBox는 아래와 같습니다.





결론적으로,

타입을 미리 명시해주는 제네릭을 사용했을때 장점은....


1. 컴파일 시 미리 강한 타입 체크를 해준다. (에러 방지)

2. 타입변환 과정을 제거해준다.



자바의 여러 클래스를 활용하려면 거의 필수적인 개념이므로

정리해두시면 좋을 것 같네요.

'Dev- > Java' 카테고리의 다른 글

@SuppressWarning란?  (0) 2018.09.07
컬렉션 프레임워크란  (0) 2018.08.23
프로세스, 스레드  (0) 2018.08.22
Java equals(), hashCode()의 차이  (0) 2018.08.22
인터페이스, 추상 클래스의 차이  (0) 2018.08.21