Post

제네릭 프로그래밍

제네릭 프로그래밍

제네릭 프로그래밍은 하나의 함수를 다양한 자료형의 객체에서 재사용할 수있는 객체 지향 기법이다.

1
public int[] sort(int[] array){}


이러한 코드는 int[]객체만 사용할 수 있다. a,b,c객체도 사용해야하고 제네릭 프로그래밍이 없다면,

1
2
3
4
public int[] sort(int[] array){}
public A[] sort(A[] array){}
public B[] sort(B[] array){}
public C[] sort(C[] array){}


이런식으로 복붙을 해야한다. 따라서, 제네릭 프로그래밍은 클래스 내부가 아닌 외부에서 타입을 지정해주기 때문에 비슷한 기능을 사용하는 경우 코드의 재사용성을 높여준다.

매개변수화 타입

제네릭 프로그래밍을 가능하게 해주는 것이 바로 매개변수화 타입이다. 매개변수화 타입은 <>안에 타입을 넣어 외부에서 타입을 지정해준다.
생성자를 제외하고 모든 메소드와 변수에 매개변수화 타입인 E를 넣어 정의해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 클래스
public class node<E>;

//메소드
public E sort(E obj);

//제네릭 노드
class Node<E>{
    E val;
    Node<E> next;

    //생성자
    public Node(E obj){
        data = obj;
        next = null;
    }
}

//배열
E[] array = (E[])new Object[size]; // 가능
E[] array = new E[size]; // 불가능


Q. 매개변수화 타입과 객체를 사용하는 방식의 차이점은 무엇인가요?

A. 객체를 사용하는 방식은 필요할 떄마다 형변환이나 클래스의 내부를 고쳐야하지만, 매개변수화 타입은 내부를 건들지 않고 다른 타입을 사용할 수 있다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.