공hannah부
제네릭(Generic) 본문
제네릭 프로그래밍
기본
- 일반적인 코드를 작성하고 이 코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법이다.
- 타입을 파라미터로 가지는 클래스와 인터페이스로 정의한다.
- 선언 시 클래스 또는 인터페이스 이름 뒤에 <T>
- 타입 파라미터
- 일반적으로 대문자 알파벳 하나로 표현한다.
제네릭을 사용하는 이유
- 컴파일 시 강한 타입 체크 가능
- 클래스의 구조와 연결관계가 복잡해지면서 타입 오류들이 발생할 수 있다. 이때 런타임-타입 에러가 나는 것을 방지한다.
- 타입명시 및 타입 변환 제거 가능
- list에 일관된 타입의 정보를 저장하도록 명시한다.
제네릭 타입 사용 예시
- 클래스 선언시 타입 파라미터 사용
- 컴파일 시 타입 파라미터가 구체적인 타입으로 변경
public clss Box<T>{
private T t;
public T get(){
return t;
}
public void set(T t){
this.t=t;
}
}
//String 타입
Box<String> box=new Box<String>();
box.set("Hello");
String str=box.get();
//Integer 타입
Box<Integer> box=new Box<Integer>();
box.set(6);
int value=box.get();
멀티 타입 파라미터
제네릭 타입은 두 개 이상의 타입 파라미터도 사용 가능하다
- 각 타입 파라미터는 콤마로 구분한다
- Ex) class<K,V,...>{...}
제네릭 메소드
매개변수 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드이다.
- 선언 방법: 리턴 타입 앞어"<>" 기호를 추가하고 타입 파라미터를 기술한다.
- Ex) public<T> Box<T> boxing(T t){...}
- 호출 방법
- 명시적으로 구체적 타입 지정 : Box<Integer> box = <Integer>boxing(100);
- 매개값을 보고 구체적 타입을 추정: Box<Integer> box = boxing(100);
ArrayList
- ArrayList <T> arr = new ArrayList<T>();
- 이론적으로 길이 제한은 없지만 heap사이즈는 넘을 수 없다.
- 추가: list.add();
- 삭제: list.remove();
'공부 > JAVA' 카테고리의 다른 글
Object / Wrapper 클래스 (0) | 2023.05.28 |
---|---|
예외처리(Exception Handling) (0) | 2023.05.21 |
캐스팅 / instanceof / 다형성 / 추상클래스, 추상메소드 (0) | 2023.05.06 |
JAVA 공부 3일차 - 자바 핵심 개념 정리1 (0) | 2023.03.10 |
JAVA 공부 2일차 - 입출력 익히기 (0) | 2023.03.08 |