📝느낀 점
이 글을 정리하기 전까지의 나의 생각은, "제네릭이란?" -> 결국 컬렉션인 List 같은곳에 사용하는 거 아냐?
"문법이 이렇게 되어 있으니,, 이렇게 사용하는가 보다" 했던 나의 바보같은 과거들... 그런식으로 공부하지마
이제서야 이렇게 깨우치고 점점 깊이 있게 이해하고 있으니 점점 알게 될때 마다 포스팅에 살을 붙여 나가야 겠다.
제네릭이란? 타입 형변환에서 발생할 수 있는 에러들을 처음부터 막기 위해 제네릭이라는 개념이 나왔다고 한다.
누가? -> 컴파일이! 컴파일이 체크 해준다고 생각하면 되는 것이다. 클래스 내부가 아닌 외부에서 지정해주는 느낌으로
생각하면 좋지 않을까 생각든다.
제네릭이란?
타입 형변환에서 발생할 수 있는 문제점을 “사전”에 없애기 위해서 만들어졌다
여기서, “사전”이라고 하는 것은 컴파일할 때 점검할 수 있도록 한 것을 말한다.
만약에 우리가 어떤 자료구조를 만들어 배포하려고 한다.
그런데 String 타입도 지원하고 싶고, Integer타입도 지원하고 싶고 많은 타입을 지원하고 싶다.
그러면 String에 대한 클래스, Integer에 대한 클래스 등 하나하나 타입에 따라 만들 것인가?
이건 너무 비효율적이다.
이러한 문제를 해결하기 위해 우리는 제네릭이라는 것을 사용한다.
이렇듯.
제네릭은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다.
제네릭은
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
클래스 내부에서 사용하는 어떤 데이터 타입을, 해당 클래스에서 사용 할때,
직접 설정을 함으로서, 해당 클래스 타입을 핸들링 할 수 있게 하는 것을 제네릭이라고 한다.
제네릭을 사용하지 않는다면,
Object로 선언을 할 수 밖에 없다.
그러고, 나중에는 (int), (String) 캐스팅을 강제로 해줘야 하는 것이다.
그렇기에, 제네릭은 애초에 개발자의 버그를 방지할 수 있다.
Generic(제네릭)의 장점
- 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다.
- 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다.
- 즉, 관리하기가 편하다.
- 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.
'Java' 카테고리의 다른 글
static에 대해 설명 / static을 사용하는 이유는? (0) | 2023.11.07 |
---|---|
enum 사용하는 이유는 무엇인가요? (0) | 2023.11.07 |
박싱(boxing), 언박싱(un-boxing) (0) | 2023.11.06 |
추상클래스와 인터페이스의 용도를 나눈 이유는 무엇인가요? (0) | 2023.11.06 |
오버로딩, 오버라이딩 설명 (0) | 2023.11.06 |