(수정)공부하면서, 잘못쓰여진 부분은 다시 수정하였습니다.
그동안 제네릭에 대한 말은 많이 들어도 정확히는 모르고, 그렇다고 놔두자니 반드시 알아야되기도 하는데다
자주 활용되는 내용이기에 다시 개념정리를 해봤습니다ㅎㅎ
제네릭이란 책에 나온 개념 대로라면...
결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능이라 합니다.
이것이 무엇인지 예제로 한번 볼게요

여기에서 <T>는 타입파라미터를 뜻합니다. 그 역할은
타입이 필요한 자리에 T를 사용할 수 있다는 것을 알립니다.(지금의 경우는 변수 선언할 때)
그렇게 되면 무엇이 좋냐??? test 클래스를 이용해 객체(인스턴스)를 생성하고, 그때 인스턴스 필드 content는 타입이 변할 수가 있습니다. 다시말해서 객체가 생성되기 전에는 선언하는 변수의 타입이 아직 미정인데, 객체를 생성하면서 타입이 변경(대체)된다는 것입니다.
예시를 확인해보겠습니다.

1. test 클래스의 인스턴스를 생성하고 타입 파라미터를 <String> 타입으로 대체했습니다.
2.이로인해 인스턴스 필드 String content는 t.content를 강제 타입 변환없이 저장이 가능합니다.
ps: 이때 알아두면 좋은 점은 <T>는 단지 이름이라서 그냥 아무 알파벳을(일반적으로는 알파벳 대문자) 넣어도 괜찮습니다.
그치만 타입 파라미터에 올 수 있는, 타입은 클래스 및 인터페이스로만 대체가 가능합니다.
즉, 인스턴스를 생성하고 인스턴스 필드를 정수 타입으로 변경을 희망시 <int>와 같이 기본 타입을 사용하는 게아닌 Integer라는 wrapper클래스를 사용해야 합니다.
마지막으로 인스턴스를 생성할 때 test <String> t = new test<>();
이런 식으로 생성하면, 인스턴스 변수를 선언할 때와 동일한 타입 String으로 객체를 생성한다는 의미입니다.
결론! 한 클래스의 타입이 미정이지만, 객체 생성할 때, 타입을 정하고싶으면 제네릭을 사용한다!로 요약정리할 수 있겠네요~~
그럼 이상으로 글을 마치겠습니다.
'Study > 이것이 자바다(개정판)' 카테고리의 다른 글
| 매개변수가 없는 람다식 예제연습 해보기 (0) | 2023.12.08 |
|---|---|
| 람다식이란?? 그리고 함수형프로그래밍?? (2) | 2023.12.06 |
| 싱글톤 패턴 간단개념 (0) | 2023.04.03 |
| main() 메소드의 String[] 매개변수 용도 및 활용 (0) | 2023.03.04 |
| System.arraycopy 를 이용한 배열 복사하기 기본 예제 (0) | 2023.03.04 |