TIL

0723

casylm 2024. 7. 24. 00:12

제네릭이란

제네릭이라는 단어는 일반적인, 범용적인이라는 영어 단어 뜻이다.

풀어보면 특정 타입에 속한 것이 아니라 일반적으로, 범용적으로 사용할 수 있다는 뜻이다.

제네릭 왜 씀?

객체의 명만 다르고 내부 동작이 거의 비슷한 두개의 클래스가 있다고 생각해보자. 개와 고양이는 울음소리가 다를 뿐 운다, 달린다, 먹는다 등의 공통 기능을 가지고 있다. 클래스 마다 메소드를 정의하면 중복되는 코드가 많이 발생하여 비효율 적일 것이다.

이를 해결하기 위해 다형성을 활용해보자

개와 고양이의 부모인 동물 클래스를 만들고 이를 상속받도록 하자. 이제 부모 클래스에 공통 메소드를 정의하면 코드의 중복은 해결되지만 안정성의 문제가 발생한다. 이를 모두 해결하기 위해 등장한 것이 제네릭이다.

 

매개변수와 인자

매개변수는 메소드 뒤에 선언되며, 값을 넘겨받아 메소드에서 동작하는 것

인자는 메소드 호출 시 값을 넘겨주는 것

 

즉, 메서드의 매개변수에 인자를 전달해서 메서드 사용 값을 결정한다.

 

타입매개변수와 타입 인자

제네릭의 타입매개 변수도 매개변수와 인자의 관계와 비슷하다.

단, 매개변수는 값을 결정하는 것이었다면 타입 매개변수는 타입을 결정하는 것이다.

메서드의 매개변수는 사용할 값에 대한 결정을 나중으로 미루는 것이고, 제네릭의 타입 매개변수는 사용할 타입에 대한 결정을 나중으로 미루는 것이다.

 

제네릭 클래스는 어디에 만들어짐?