JAVA/기초공부

[JAVA] 제너릭 (Generics)

SoU330 2024. 10. 14. 01:55

 

 

 

제너릭

자바에서 클래스나 메서드가 사용할 데이터 타입을 미리 지정하지 않고, 나중에 사용할 때 타입을 지정할 수 있도록 하는 기능

 

 

 

 

 

제너릭을 사용하는 이유

타입 안전성

제너릭을 사용하면 컴파일 시점에 타입 체크가 이루어진다. 이를 통해 잘못된 타입의 데이터를 사용하는 것을 방지할 수 있으며 런타임에서 발생할 수 있는 ClassCastException 같은 오류를 예방할 수 있다.

코드 재사용성

제너릭을 사용하면 다양한 데이터 타입에 대해 하나의 코드로 처리할 수 있으므로 코드의 재사용성을 높일 수 있다. 예를 들어 Integer나 String 같은 다른 타입을 처리하는 로직을 따로 만들 필요 없이 제너릭을 사용하면 하나의 로직으로 처리할 수 있다.

 

 

 

 

 

 

 

 

 

Generic 메서드 사용 배열 출력 예제

public class GenericsTest_01 {
    public static void main(String[] args) {
        // 정수형, 실수형, 문자열 배열 선언
        Integer[] intArray = {10,20,30,40,50};
        Double[] dblArray = {12.1,22.2,32.3,42.4,52.5,62.6};
        String[] strArray = {"환","영","합","니","다","."};

        prtArray(intArray);
        prtArray(dblArray);
        prtArray(strArray);
    }

    // 메소드로 전달되는 정수형, 실수형, 문자열형 배열에 따라서 결과를 출력하는 경우
    public static <T> void prtArray(T[] trsArray) {
        // 배열 요소들 출력
        for (T s : trsArray)
            System.out.printf("%s ",s);
        System.out.println();
    }
}

 

 

 

 

 

 

 

 

 

Generic 메서드 사용 객체 복사 예제

public static <T> void copyArray (T[] source, T[] target){
    for (int i = 0; i < source.length; i++) {
        target[i] = source[i];
    }
}

 

 

 

 

 

 

 

 

Generic 메서드 사용 최솟값 구하기 예제

public static <T extends Comparable <T>> T minimum(T w, T x, T y, T z) {
    T min = w;
    if(x.compareTo(min) < 0 )
        min = x;
    if(y.compareTo(min) < 0 )
        min = y;
    if(z.compareTo(min) < 0 )
        min = z;

    return min;
}