728x90
반응형
<제네릭 타입의 필요성>
- 자바는 다양한 종류의 객체를 관리하는 컬렉션이라는 자료구조 제공
- 초기에는 Object 타입의 컬렉션 사용
- Object 타입의 컬렉션은 클래스에 어떠한 객체를 담았는지 알 수 없음.
<제네릭 타입의 의미>
- 하나의 코드를 다양한 타입의 객체에 재사용 하는 객체 지향 기법
- 클래스, 인터페이스, 메서드를 정의할 때 타입을 변수로 사용
<제네릭 타입의 장점>
- 컴파일할 때 타입을 점검하기 때문에 실행도중 발생할 오류 사전 방지
- 불필요한 타입 변환이 없어 프로그램 성능 향상
<제네릭 타입 선언>
class 클래스 이름 <타입매개변수>{
//필드
//메서드
}
타입 매개변수
타입 매개변수 | 설명 |
E | 원소 |
K | 키 |
N | 숫자 |
T | 타입 |
V | 값 |
<자료형 매개변수 T>
- type의 의미로 T를 사용함
- <T>에서 <>는 다이아몬드 연산자라고 함
- static 키워드는 T에 쓸 수 없다.
- ArrayList<String> list=new ArrayList<>();
다이아몬드 연산자 내부에서 자료형은 생략 가능함.
제네릭 객체 생성
제네릭 클래스 <적용할 타입> 변수 = new 제네릭 클래스<적용할 타입> ();
<제네릭 타입 한정>
<T extends 특정 클래스> 반환타입 메서드이름 {}
<제너릭 메서드>
- 타입 매개변수를 사용하는 메서드
- 제너릭 클래스 뿐만 아니라 일반 클래스의 멤버도 될 수 있음
- 제너릭 메서드를 정의할 때는 타입 매개변수를 반환 타입 앞에 위치
<타입 매개변수> 반환타입 메서드이름(...) {
}
* 2개 이상의 타입 매개변수도 가능
- 제너릭 메서드 호출할 때는 구체적인 타입 생략가능
728x90
반응형
'Java > 기초' 카테고리의 다른 글
[java기초] 기본패키지 (0) | 2021.07.05 |
---|---|
[java 기초] 제네릭과 컬렉션 (0) | 2021.07.04 |
[java기초] 모듈과 기본패키지 (0) | 2021.07.02 |
[java기초] 패키지 (0) | 2021.07.02 |
[java 기초] 인터페이스와 다형성 (0) | 2021.06.30 |
댓글