□ 정의
결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능
- Box 클래스
public class Box<T> {
public T content;
}
- 사용 예시
public class GenericExample {
public static void main(String[] args) {
Box<String> box1 = new Box<>();
box1.content = "안녕하세요";
String str = box1.content;
System.out.println(str);
Box<Integer> box2 = new Box<>();
box2.content = 100;
int value = box2.content;
System.out.println(value);
}
}
- box1에는 T대신 String으로 대체
- box2에는 T대신 Integer으로 대체
□ 사용 목적
- 타입 안정성 보장
- 형변환 불필요
- 코드 재사용성 증가
□ 사용 예시
- Before
import java.util.*;
public class NonGenericExample {
public static void main(String[] args) {
List list = new ArrayList(); // 타입 지정 X
list.add("Hello");
list.add(123); // 문자열이 아닌 정수도 추가 가능 (문제 발생 가능)
String str = (String) list.get(0); // 형변환 필요
String str2 = (String) list.get(1); // 런타임 에러 발생 (ClassCastException)
}
}
- After
import java.util.*;
public class GenericExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // 제네릭 타입 지정
list.add("Hello");
// list.add(123); // 컴파일 오류! (타입 안전성 보장)
String str = list.get(0); // 형변환 불필요
System.out.println(str);
}
}
'Java & Spring > Java' 카테고리의 다른 글
Java의 동작원리 (1) | 2025.10.13 |
---|---|
Java - 비동기처리(CompletableFuture) (0) | 2025.03.06 |
Java - 비동기 처리(ExecutorService / Future) (0) | 2025.03.04 |
Java - 비동기 처리(Thread & Runnable) (0) | 2025.03.04 |
HTTP 요청과 응답에 사용되는 클래스들 (0) | 2025.02.06 |