티스토리 뷰

Goal

 - 제네릭 프로그래밍의 정의와 특징 및 사용법에 대해 알아본다.

 

1. 제네릭 프로그래밍이란

 - 변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형으로 변환 될 수 있도록 프로그래밍 하는 방식.

 - 실제 사용되는 참조 자료형으로의 변환은 컴파일러가 검증하므로 안정적인 프로그래밍 방식 

 

2. 자료형 매개 변수 T

 - 여러 참조 자료형으로 대체 될 수 있는 부분을 하나의 문자로 표현.

 - type이라는 의미로 T를 사용

 

3. 자료형 매개 변수의 제한 

 - 원하는 자료형 매개 변수만 제네릭 클래스에서 사용할 수 있게 하기 위해 extends를 이용한다.

 - 상속의 원리에 따라 extends한 클래스는 상속클래스에 정의 된 메서드를 공유할 수 있음.

 

예제 1) Material class

public abstract class Material {
    
    public abstract void doPrinting();

}

예제 2) Material을 상속을 받는 GenericPrinter class

//T로 들어올 type은 Material을 상속받은 값이어야 한다 
public class GenericPrinter<T extends Material>  {
   
    private T material;

    public T getMaterial() {
        return material;
    }

    public void setMaterial(T material) {
        this.material = material;
    } 
    
    public String toString() {
        return material.toString();
    }
    
    public void printing() {
        
        material.doPrinting();
        
    }

}

예제 3) Material을 상속받은 Powder class

 - Material을 상속받았기 때문에, doPrinting 메서드를 Override하여 사용할 수 있다.

package generic;

public class Powder extends Material {
    
    public String toString() {
        return "This is Powder";
    }
    
    @Override
    public void doPrinting() {
        System.out.println("Powder printing");
        
    }

}

 예제 4) Material을 상속받은 Plastic class

package generic;

public class Plastic extends Material {
    
    public String toString() {
        return "This is Plastic";
    }

    @Override
    public void doPrinting() {
        
        System.out.println("Plastic printing");
        
    }

}

 예제 5) Water classs

 - Material class를 상속받지 않기 때문에, GenericPrinter에서 Water type으로 사용될 수 없다. 

package generic;

public class Water {

}

 

 

 

관계또

 

4. 자료형 매개 변수가 두 개 이상일 때

public class Point<T, V> {
    T x;
    V y;
    
    Point (T x, V y) {
        this.x = x;
        this.y = y;
    }
    
    public T getX() { //제네릭 메서드
        return x;
    }
    
    public V getY() {
        return y;
    }
}

 

 -  일반 클래스에서도 제네릭 메서드를 사용할 수 있으며, 제네릭 메서드의 매개 변수는 지역변수의 역할을 한다. 

 

'Java > Java 올인원 패키지' 카테고리의 다른 글

24. List 인터페이스 (Java)  (0) 2020.03.19
23. 컬렉션 프레임워크 (Java)  (0) 2020.03.19
21. String, Wrapper 클래스  (0) 2020.03.19
20. Object 클래스 (Java)  (0) 2020.03.18
19. 인터페이스 (Java)  (0) 2020.03.18
댓글