제네릭의 효용
타입 언어에서 중복되거나 필요없는 코드를 줄여주고, 그러면서 타입 안정성을 해치지 않는다.
파이썬, 자바스크립트와는 다르게 Java 는 타입을 지정해줘야한다.
같은 함수더라도 타입에 따라 세 차례나 구현해야함.
제네릭 문법
1. 제너릭은 클래스 또는 메서드에 사용 가능, 클래스 이름 뒤에 <> 문법 안에 들어가야할 타입 변수 지정 ( T 는 컨벤션 )
2. 선언해둔 타입 변수는 해당 클래스 내에서 특정한 타입이 들어갈 자리에 대신 들어갈 수 있음
3. 메서드의 리턴 타입에 들어가는 것 역시 마찬가지다.
4. 제너릭을 통해 구현한 클래스를 사용하는 부분.
클래스에 선언했기 때문에 인스턴스를 만들기 위해서 타입 변수에 들어갈 실제 변수의 값을 넣어줘야함. ( String 으로 넣어준 모습 )
5. 타입변수로 대체되었던 곳에 String 으로 들어가있기 때문에 "Hello World" 사용 가능
제네릭 용어
Generic<T> 의 클래스처럼 제네릭을 사용한 클래스를 제네릭 클래스 라고 함.
변수명 T 는 타입 변수
Generic 클래스를 원시 타입
제너릭 제한
- static 사용 불가능
- 타입 변수는 인스턴스 변수로 간주되고, 모든 객체에 동일하게 동작해야 하는 static 필드 특성상 사용 불가
- 제너릭 배열 생성 불가능
제너릭 문법
- 다수의 타입 변수 사용 가능
- 다형성 즉 상속과 타입의 관계는 그대로 적용
- 부모 클래스로 제네릭 타입 변수를 지정하면 그 안에 자식 클래스를 넘기는 것이 가능
- 와일드카드를 통해 제네릭의 제한을 구체적으로 정할 수 있음
- <? extends T> : T와 그 자손들만 사용 가능
- <? super T> : T와 그 조상들만 가능
- <?> : 제한 없음
- 이렇게 타입 앞에 <T> 같이 제네릭을 사용한 경우, 해당 메서드에만 적용되는 제네릭 타입 변수 선언 가능
- 타입 변수를 클래스 내부의 인스턴스 변수 취급하기 때문에 제네릭 클래스의 타입 변수를 static 메서드에는 사용할 수 없었지만, 제네릭 메소드의 제네릭 타입 변수는 해당 메소드에만 적용되기 때문에 메소드 하나를 기준으로 선언하고 사용할 수 있음
- 같은 이름의 변수를 사용했다고 해도 제네릭 메소드의 타입 변수는 제네릭 클래스의 타입 변수와 다름
'컴퓨터 프로그래밍 > Java' 카테고리의 다른 글
[Java] Collection 과 Wrapper 객체 (0) | 2024.08.05 |
---|---|
[Java] 예외처리 (0) | 2024.07.30 |
[Java] 인터페이스 (0) | 2024.07.30 |
[Java] 상속 (0) | 2024.07.29 |
[Java] this와 this(), 접근 제어자, package와 import (0) | 2024.07.29 |