Dev-/Java

제네릭이란

thiago6 2018. 8. 22. 14:24

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

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


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

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




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

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


[Box.java]


[Main.java]


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

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




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

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


[GenericBox.java]


[Main.java]



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





결론적으로,

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


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

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



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

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