2021. 3. 17. 15:56ㆍJAVA 공부
점심을 밖에 나가서 먹고 왔는데 밖에 날씨가 굉장히 좋네요 ~
따사로운 햇살에 적당히 부는 바람
딱 덥지도 춥지도 않은데, 기분이 좋은 날 이랄까요?
이런 날에 밖에 나가서 산책 해야 되는데 ㅎㅎㅎ
이번에는 제네릭에 대해서 알아 봅시다
제네릭 Generic
제네릭은 클래스 또는 인터페이스 뒤에 <>(꺽쇠) 가 오는 것을 의미합니다
제네릭을 왜 사용하는가 ?
먼저 예제를 한번 봅시다
일반적으로, Object 클래스를 사용 할 때 ... ( 모든 타입, 모든 클래스 ) 를 객체로 만들어서 사용하려고 할 때....
Object는 모든 데이터 타입을 받을 수 있습니다.
그런데, ※User1 과 User2 는 서로 모릅니다
User1이 ABC 라는 클래스에 String 형을 넣었습니다.
User2는 ABC 라는 클래스에 있는 getObj 를 이용해서 들어있는 데이터를 사용하고 싶습니다.
그렇다면, User1이 어떤 타입, 어떤 클래스 를 넣었는지 모르니까
꺼내서 쓸 때도 어떤 타입 및 클래스로 받아야 할지 모르겠죠?
그래서 User2는 "음... int로 써볼까?" 라면서 int형으로 받아봅니다
그런데... User1은 분명 String 형을 넣었습니다. User2는 int형으로 변환하면 어떻게 되요?
에러가 납니다 ~
이러한 일을 방지하기 위해서
제네릭을 씁니다.
제네릭의 사용
제네릭은 위 코드처럼, <> 꺽쇠 사이에 쓰고 싶은 이름을 쓰면 됩니다. 보통 C or T 를 많이 쓴다고 하네요
이렇게 사용을 해주면 됩니다.
즉 .. Type 자리에 넣고 싶은 클래스, 타입을 넣어주면 됩니다
setT를 사용하려고 하니까 어떻게 되어 있죠?
매개변수가 String 형으로 타입변환이 되어 있죠?
그러면 , get 할때도 String 타입 반환으로 변경 되어 있습니다.
생성자에서는 <Type> 를 생략할 수 있습니다.
위 코드처럼 뒤에 있는 생성자의 제네릭은 생략할 수 있습니다. 하지만, 앞에는 꼭 써주어야 해요 ~
제네릭은 기본 타입은 불가능 합니다
byte char int ...... 등등 의 기본타입은 제네릭으로 사용할 수 없습니다.
그렇기 때문에, wrapper 를 활용해서 사용해 주어야 합니다 ~
제네릭은 다중으로 사용할 수 있습니다
이렇게 제네릭에 대해 알아 보았습니다.
제네릭은 어떻게 사용하는지만 이해를 할 수 있으면 된다고 합니다.
제네릭을 배우는 이유는 다음에 알아볼 컬레션 프레임워크 때문인데...
이 프레임워크가 제네릭 형태로 되어 있어서 이렇게 짚고 넘어 간다고 합니다
고생하셨습니다
'JAVA 공부' 카테고리의 다른 글
Day23 - Generic 을 적용한 List ? , LinkedList (0) | 2021.03.18 |
---|---|
Day22 - Collection Framework , ArrayList (0) | 2021.03.17 |
Day22 - Date, Calendar, Random, StringTokenizer (0) | 2021.03.17 |
Day21 - Math , Wrapper, Arrays (0) | 2021.03.16 |
Day21 - StringBuffer (0) | 2021.03.16 |