지네릭스?
지네릭스란 다양한 타입의 객체들을 다루는 메서드 혹은 컬렉션 클래스에 컴파일 시 타입을 체크해주도록 하는 기능이다.
컴파일시 생성된 객체의 타입을 체크해주기 때문에 타입의 안정성을 높이고 형변환이 간편하다는 장점이있다.
✍️ 지네릭스의 표기
List<String> list = new ArrayList();
흔히 컬렉션에서 이런식으로 컬렉션을 사용하는 경우를 많이 보았을 것이다.
List는 제네릭스로 타입을 체크할 수 있도록 되어있다.
해당 list는 String 으로 지정하였기때문에 String 이외에 타입이 저장될 경우 컴파일 에러가 발생한다.
따라서 컴파일시 타입체크를 함과 동시에 다른 타입이 저장되지 못하도록 타입 안정성이 생기는 것 이다.
🔍 모든 타입을 받는 지네릭스
지네릭스는 타입을 지정하는 동시에 어떠한 타입을 받을 수 있도록 명시할 수 도있다.
List 컬렉션 프레임 워크만 살펴보아도 String , Integer , 모든 객체 등등 다양한 타입으로 선언할 수 있다.
이는 List의 지네릭스 타입이 T로 되어있기 때문이다.
interface List<T>
클래스나 인터페이스에서 지네릭스 타입으로 설정하여 받게 될 경우 내부에 설정된 지네릭스는 모두
인스턴스 생성할 때 지정된 타입을 가지게 된다.
◾ 지네릭스 클래스
class Test<T>{ T name; }
◾인스턴스 생성 후 데이터 삽입
Test<String> test = new Test(); test.name = "홍길동" //정상 test.name = 10 //에러
👉 String 타입으로 인스턴스를 생성해주고 지네릭스 타입으로 된 필드에 데이터삽입
int형으로 저장하였을 때 에러 발생
Type mismatch: cannot convert from int to String : 타입 불일치
즉 인스턴스 생성 시 지정한 타입이 String이기때문에 그 내부에 작성된 지네릭스(T)는 모두 String 타입으로 자동 설정된다.
제네릭스를 활용하여 메서드를 만들어보자
◾ 제네릭스 반환 타입 메서드
public <T> T print(T i) { return i; }
👉 해당 메서드의 <T>는 지네릭스 타입을 받아 사용한 다는 것이다.
반환 타입은 지정된 지네릭스 타입이며 매개변수까지 지네릭스 타입으로 받는다.
◾ 인스턴스 생성 후 호출
Test<Integer> test = new Test(); System.out.println(test.print(10)); //정상 System.out.println(test.print("비정상")); //에러
👉 반환 타입부터 전달받는 매개변수의 타입까지 모두 지네릭스 타입으로 인해
객체 생성 시 지정된 타입으로 변환되는것을 알 수 있다.
'Java' 카테고리의 다른 글
[Java] 서버에서 Set-Cookie에 담은 RefreshToken이 브라우저로 전송이 안되는 문제 해결 (2) | 2025.05.28 |
---|---|
[Java] 자바 List에 대해 알아보고 ArrayList와 LinkedList에 차이점을 살펴보기 (2) | 2025.04.02 |
[Java] 자바에서 JDBC를 통해 MySQL를 데이터 조작해보기 (0) | 2025.04.01 |
[Java] 문자열의 묵시적 선언과 명시적 선언에 따른 문자열 비교(Heap (2) | 2025.03.28 |
[Java] 자바 예외 클래스의 계층 구조와 Exception, Error, RuntimeException, IOException 의 차이점을 알아보자 (0) | 2025.03.28 |