Java/문법
Generic - 매개변수 타입을 미리 지정하지 않는 유연한 문법
JuNo_12
2025. 4. 17. 21:22
Generic 이란?
- 제네릭은 클래스, 메서드 등에 사용되는 <T>타입 매개변수를 의미
- 타입을 미리 지정하지 않고 사용 시점에 유연하게 결정할 수 있는 문법
- 코드 재사용성(다양한 타입에서 동일한 코드로 코드 재사용 가능)
- 타입 안정성(잘못된 타입 사용을 컴파일 시점에 방지)
- 하지만 과도하게 사용하면 오히려 복잡해질 수 있으므로 주의!
Generic 활용 예시
public class GenericBox<T> { // 제네릭 메서드
// 속성
private T item;
// 생성자
public GenericBox(T item) {
this.item = item;
}
// 기능
public T getItem() {
return this.item;
}
// 일반 메서드 T item 는 클래스의 <T> 를 따라간다.
public void printItem(T item) {
System.out.println(item);
}
// 제네릭 메서드 <S> 는 <T> 와 별개로 독립적이다.
public <S> void printBoxItem(S item) {
System.out.println(item);
}
}
public class Main {
public static void main(String[] args) {
GenericBox<String> strGBox = new GenericBox<>("ABC");
GenericBox<Integer> intGBox = new GenericBox<>(100);
// 일반메서드: 클래스 타입 매개변수를 따라간다.
// String 데이터 타입 기반으로 타입소거가 발생.
// String 타입의 다운캐스팅 코드 삽입!
strGBox.printItem("ABC"); // String 만 사용가능
strGBox.printItem(100); // 에러 발생
// 제네릭 메서드: 독립적인 타입 매개변수를 가집니다.
// String 타입 정보가 제네릭 메서드에 아무런 영향을 주지 못함.
// 다운캐스팅 코드 삽입되지 않음.
strGBox.printBoxItem("ABC"); //모든 데이터 타입 활용 가능
strGBox.printBoxItem(100);
strGBox.printBoxItem(0.1);
}
}