Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Generic Programming 본문

Java/자료구조

Generic Programming

Seung__ 2021. 10. 24. 20:56

1. Generic 자료형 정의


  • 클래스에서 사용하는 변수의 자료형이 여러 개 일수 있음. 
  • 해당 기능의 자료형을 특정하지 않고 해당 클래스를 사용할 때 지정하도록 선언.
  • 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므오 안정적인 방식
  • 자료형 매개변수 T(type Paramter) 
    • 이 클래스를 사용하는 시점에, 사용할 자료형을 지정, static 변수 사용 불가.
  • E : element, K : key, V : value

 

 

2. <> 다이아몬드 연산자


  • <> : 다이아몬드 연산자
  • ArrayList list = new ArrayList<>() 다이아몬드 연산자에 자료형 생략 가능.
  • JAVA 10이후로 Generic에서 자료형 추론함.

 

 

 

3. Generic 사용


  • 여러 종류의 material을 받는 printer가 있다고 하자.
public class GenericPrinter<T> {

    private T material;

    public GenericPrinter() {
    }

    public GenericPrinter(T material) {
        this.material = material;
    }

    public T getMaterial() {
        return material;
    }

    public void setMaterial(T material) {
        this.material = material;
    }

    @Override
    public String toString() {
        return "ThreeDPrinter{" +
                "material=" + material +
                '}';
    }
}
  • 아래 코드와 같이 사용이 가능.
class ThreeDPrinterTest {

    GenericPrinter<Powder> genericPrinterPowder;
    GenericPrinter<Plastic> genericPrinterPlastic;

    @BeforeEach
    void beforeTest(){
        Powder powder = new Powder();
        genericPrinterPowder = new GenericPrinter<>(powder);

        Plastic plastic = new Plastic();
        genericPrinterPlastic = new GenericPrinter<>(plastic);
    }
    @Test
    void getMaterial() {
        Plastic plastic = genericPrinterPlastic.getMaterial();
        Powder powder = genericPrinterPowder.getMaterial();

        assertEquals(plastic.getClass(), Plastic.class);
        assertEquals(powder.getClass(), Powder.class);
    }

}

 

 

4. GitHub : 211024 Generic Type


 

GitHub - bsh6463/dataStructure

Contribute to bsh6463/dataStructure development by creating an account on GitHub.

github.com

 

'Java > 자료구조' 카테고리의 다른 글

Generic Method  (0) 2021.10.24
<T extends Class> 사용  (0) 2021.10.24
Queue 구현  (0) 2021.10.24
Stack 구현  (0) 2021.10.24
LinkedList 구현  (0) 2021.10.24
Comments