자료구조 #11 - 제네릭 메서드

HongInSung·2022년 11월 29일
0
post-thumbnail

이 포스트는 FastCampus에 이 강의를 보고 포스팅되었습니다.
문제가 될 시 삭제될 예정입니다.

제너릭 메서드가 뭐야

자료형 메개변수를 메서드의 매개변수나 반환 값으로 가지는 메서드입니다.
자료형 매개변수가 하나 이상일 경우도 있습니다.
제너릭 클래스가 아니어도 내부에서 제너릭 메서드를 구현하여 사용이 가능합니다.
제너릭 매서드에 구조는 다음과 같습니다.

public <자료형 매개 변수> [반환형] [메서드 이름] [(자료형 매게변수..)] {}

제너릭 메서드 사용한 예시좀 보여줘바

다음과 같은 요구조건의 메서드를 만들어봅시다.

  • 두 점(top, bottom)을 기준으로 사각형을 만들 떄 사각형의 넓이를 구하세요.
  • 단, 두 점은 정수일수도 있고, 실수일수도 있습니다.

일단 두 점을 받을 클래스를 만들어봅시다.

public class Point<T, V> {
    T x;
    V y;

    public Point(T x, V y) {
        this.x = x;
        this.y = y;
    }

    public T getX() {
        return x;
    }

    public V getY() {
        return y;
    }
}

그리고 메인쪽에 제너릭 메서드를 만들어 봅시다.

// public <자료형 매개 변수> [반환형] [메서드 이름] [(자료형 매게변수..)]
// static은 자유입니다.
public static <T, V> double makeRectangle(Point<T, V> p1, Point<T, V> p2) {
    double left = ((Number)p1.getX()).doubleValue();
    double right = ((Number)p2.getX()).doubleValue();
    double top = ((Number)p1.getY()).doubleValue();
    double bottom = ((Number)p2.getY()).doubleValue();

    double width = right - left;
    double height = bottom - top;

    return width * height;
}

그리고 테스트 코드를 짜주면 완성입니다!

public static void main(String[] args) {
    Point<Integer, Double> p1 = new Point<>(0, 0.0);
    Point<Integer, Double> p2 = new Point<>(10, 10.0);
    double rect = GenericMethod.<Integer, Double> makeRectangle(p1, p2);
    System.out.println(rect); // 결과 = 100
}

아까 말했던것처럼 꼭 제네릭 클래스가 아니더라도 이렇게 구현해서 사용하시면 됩니다.

전체코드는요?

링크
위 링크로 들어가시면 됩니다.

마치며

제네릭은 여기까지 다루도록 하겠습니다.
다음 시간에는 드디어 컬렉션을 써볼겁니다!
와 드디어 나오네 그럼 모두 수고하셨습니다.

profile
안녕하세요! 풀스택 노려보고 있는 홍인성입니다!

0개의 댓글