generic: 하나의 값이 여러 데이터 타입을 가질 수 있음 (static에는 사용 불가)
->String 타입, int 타입 등등의 다양한 타입으로 메소드를 만들고 싶은 경우 사용 가능!
->일단 무슨 데이터 타입을 쓸지 안 정하고 generic으로 선언 후, 나중에 그 메소드를 사용할 때 지정해서 사용함
- 선언 및 사용 예시
public class Example <T> {...}
public interface Example <T> {...}
//사용
Example<Integer> ex = new Example<Integer>();
- 활용 예시
public class Generic<T> {
private T t;
public T get() {
return this.t;
}
public void set(T t) {
this.t = t;
}
}
//사용 -> T에 String이 대입되었다고 생각하면 됨
Generic<String> stringGeneric = new Generic<>();
- 제네릭의 제한을 구체적으로 정할 수 있음
public class ParkingLot<T extends Car> { ... }
ParkingLot<BMW> bmwParkingLot = new ParkingLot();
ParkingLot<Iphone> iphoneParkingLot = new ParkingLog(); // error!
- <? extends T> : T와 그 자손들만 사용 가능
- <? super T> : T와 그 조상들만 가능
- <?> : 제한 없음
더보기
제한 하는 이유는 다형성 때문
위 코드에서 T는 car의 자손 클래스들 중 하나로 지정될 수 있으므로 클래스 내부에서 Car 객체에 접근하는 코드를 작성할 수 있도록 함
'코딩 > 자바' 카테고리의 다른 글
자바 문법 - 5주차(쓰레드, 함수형 인터페이스, stream) (0) | 2025.01.08 |
---|---|
자바 문법 - 5주차(쓰레드) (0) | 2025.01.07 |
자바 문법 - 4주차 (0) | 2025.01.02 |
자바 문법 - 3주차 (0) | 2024.12.31 |
자바 문법 - 2주차 (0) | 2024.12.31 |