코딩/자바

자바 문법 - 4주차(generic)

yoney 2025. 1. 6. 21:12


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!
  1. <? extends T> : T와 그 자손들만 사용 가능
  2. <? super T> : T와 그 조상들만 가능
  3. <?> : 제한 없음
더보기

제한 하는 이유는 다형성 때문

위 코드에서 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