제네릭이란 ?
자바(Java)와 같은 프로그래밍 언어에서 코드의 재사용성과 타입 안전성을 높이기 위해 사용하는 템플릿
데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 한다
컴파일 시점에 데이터 타입을 명확히 지정할 수 있어, 코드의 유연성과 안전성을 동시에 확보
제네릭의 주요 특징
1. 타입 안정성(Type Safety)
• 제네릭을 사용하면 컴파일 시점에 타입이 결정되므로, 잘못된 타입 사용으로 인한 오류를 방지
• 예: List<String>은 문자열만 저장 가능하며, 컴파일 시점에 다른 타입을 넣으려 하면 에러가 발생
2. 코드 재사용성
• 제네릭을 사용하면 다양한 데이터 타입에 대해 하나의 코드로 처리 가능
• 예: List<T>는 문자열, 숫자, 사용자 정의 객체 등 어떤 타입이든 처리
3. 형변환(Downcasting) 제거
• 제네릭을 사용하면 형변환(casting)이 필요 없어 코드가 간결하고 안전
• 예: List<String>에서 값을 꺼낼 때는 문자열(String)로 자동 처리
제네릭의 사용법
1. 클래스에서 제네릭 사용
// 제네릭 클래스를 정의
public class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
// 사용하는 예제
Box<String> stringBox = new Box<>();
stringBox.setValue("Hello");
System.out.println(stringBox.getValue()); // 출력: Hello
Box<Integer> intBox = new Box<>();
intBox.setValue(123);
System.out.println(intBox.getValue()); // 출력: 123
2. 메서드에서 제네릭 사용
// 제네릭 메서드
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}
// 사용하는 예제
String[] stringArray = { "A", "B", "C" };
printArray(stringArray);
Integer[] intArray = { 1, 2, 3 };
printArray(intArray);
3. 제네릭 인터페이스
// 제네릭 인터페이스 정의
public interface Repository<T> {
void save(T entity);
T findById(int id);
}
// 구현 클래스
public class UserRepository implements Repository<User> {
@Override
public void save(User user) {
System.out.println("Saving user: " + user.getName());
}
@Override
public User findById(int id) {
return new User(id, "Sample User");
}
}
참고:
https://inpa.tistory.com/entry/JAVA-☕-제네릭Generics-개념-문법-정복하기
'Java' 카테고리의 다른 글
| Try With Resource (2) | 2025.01.22 |
|---|---|
| 불변 객체(Immutable Object) (0) | 2025.01.18 |
| Record Class (불변 데이터 클래스) (2) | 2025.01.17 |