자바 재네릭

웅평·2023년 12월 5일

재네릭스

  • 다양한 타입의 객체를 지원하는 클래스, 인터페이스, 메소드를 정의하는 방법
  • 같은 동작을 하는 클래스나 메소드를 한번만 정의함
  • 기본자료형 : int, boolean, String등 재네릭스에서 바로 못씀
  • Wrapper class 사용해야한다
public class _01_Generics {
    public static void main(String[] args) {
        Integer[] iArray = {1, 2, 3, 4, 5};
        Double[] dArray = {1.0, 2.0, 3.0, 4.0, 5.0};
        String[] sArray = {"A", "B", "C", "D", "E"};

        printInArray(iArray);
        printDoubleArray(dArray);
        printStringArray(sArray);

        System.out.println("------------");

        printAnyArray(iArray);
        printAnyArray(dArray);
        printAnyArray(sArray);
    }

    // 재네릭스 생성 private static <T> void printAnyArray(T[] array) {}
    private static <T> void printAnyArray(T[] array) {
        for (T t : array) {
            System.out.print(t + " ");
        }
        System.out.println();
    };

    private static void printStringArray(String[] sArray) {
        for (String s : sArray) {
            System.out.print(s + " ");
        }
        System.out.println();
    }

    private static void printDoubleArray(Double[] dArray) {
        for (double d : dArray) {
            System.out.print(d + " ");
        }
        System.out.println();
    }


    private static void printInArray(Integer[] iArray) {
        for (int i : iArray) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
}

T = Type, K = key, V = Value, E = Element 를 뜻한다

제네릭 클래스

public class Box<T> {
    
    private T item;

    public T getItem() {
        return item;
    }

    public void setItem(T item) {
        this.item = item;
    }
}
  • 클래스에서 사용하려면 클래스 명 우측에 <>를 사용해서 선언한다.
public class Box<M, I> {

    private M material;
    private I item;

    public M getMaterial() {
        return material;
    }

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

    public I getItem() {
        return item;
    }

    public void setItem(I item) {
        this.item = item;
    }
}
  • <>안에 복수가 가능하다

WrapperClass

  • int, double, float, char 기본자료형을 객체형으로 만듬
  • Integer, Float, Character, Double
public class _03_WrapperClass {
    public static void main(String[] args) {
        Integer i = 123;
        Double d = 1.0;
        Character c = 'A';

        System.out.println(i);
        System.out.println(d);
        System.out.println(c);

        System.out.println("-------------");
        // 래퍼 클래스의 메소드
        System.out.println(i.intValue());
        System.out.println(d.intValue()); // 실수를 정수로
        System.out.println(c.charValue());

        System.out.println("-------------");

        String s = i.toString();
        System.out.println(s);
    }
}

참고
나도코딩 유튜브

0개의 댓글