Java _ Generic

원종서·2023년 3월 1일
0

java

목록 보기
6/9

Generic

Generic 이란 결정되지 않은 타입을 파라미터로 처리하고, 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능.

public class Box<T> {
	// T 를 타입 파라미터라 부름.
	public T content; 
    
}
  • 타입 파라미터를 대체하는 타입은 클래스 및 인터페이스이다.

제네릭 타입

: 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스를 말함.

// Product 는 제네릭 타입
public class Product <T, W > {
	T a ;
    W b;
  }

제네릭 메서드

-타입 파라미터를 갖고 있는 메서드

public <A,B,.. > TypeOsfReturn methodName(Parameter ... )


publuic <T> Box<T> boxing(T t) {
	Box<T> box = new Box<>();
    
    box.set(t);
    return box;
    
}

제한된 타입 파라미터

  • 모든 타입으로 대체할 수 없고, 특정 타입과 자식 또는 구현 관계에 잇는 타입만 대체할 수 있는 타입 파라미터
public <T extends Number> boolean compare(T t1, T t2) {
	double v1 = t1.doubleValue(); // doubleValue() is The method Of Number Class
    double v2 = t2.doubleValue();
    
    return v1 == v2;

와일드카드 타입 파라미터

  • 제네릭 타입을 매개값이나 리턴 타입으로 사용할 경우 타입 파라미터로 ? 를 사용할 수 있다.
  • ? 는 범위에 있는 모든 타입으로 대체 가능 한 것.

Person <- Worker
Person <- Student <- HighStudent
Person <- Student <- MiddleStudent

라는 상속관계에서.

// It Can Contain Student and Student's children
typeOfReturn methodName(typeOfGeneric<? extends Student> parameterName) {...}

// It Can contain Worker and Worker's Parent whose name is Person.
typeOfReturn methodName(typeOfGeneric<? super Worker> parameterName) {...}
              

0개의 댓글