컴퓨터공학 💻 도서관📚

Part2. 5-9 제네릭 메서드 활용하기 본문

✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습

Part2. 5-9 제네릭 메서드 활용하기

들판속초록풀 2025. 6. 26. 13:43

제네릭 메서드

  • 자료형 매개변수(T, V) 메서드의 매개변수나 반환 값으로 가지는 메서드
  • 자료형 매개 변수가 하나 이상인 경우도 있음
  • 제네릭 클래스가 아니어도 내부에 제네릭 메서드는 구현하여 사용 할 수 있음
  • public  <자료형 매개 변수>   반환형   메서드 이름(자료형 매개변수.....) { }

제네릭 메서드의 활용 예

 

  • 두 점(top, bottom)을 기준으로 사각형을 만들 때 사각형의 너비를 구하는 메서드를 만들어 보자
  • 두 점은 정수인 경우도 있고, 실수인 경우도 있으므로 제네릭 타입을 사용하여 구현한다.
public class Point<T, V> {     // 제네릭 클래스
	
	T x;              // x 는 T 자료형
	V y;              // y 는 V 자료형
	
	Point(T x, V y){
		this.x = x;
		this.y = y;
	}
	
	public  T getX() {
	        return x;
	}

	public V getY() {
		return y;
    }
}

 

 

 

Number 은 추상클래스이며  Integer, Double, Float, Long, Short, Byte 등 숫자 관련 클래스들의 상위 타입이다.

(Number)은  다른 타입을  Number 타입으로 강제 변환하겠다는 뜻이다.

 

doubleValue() 메서드는 Number 클래스를 상속한 클래스들이 공통으로 제공하는 메서드

객체가 가지고 있는 값을 double 타입으로 변환해서 반환한다. 

 

public class GenericMethod {

	public static <T, V> double makeRectangle(Point<T, V> p1, Point<T, V> p2) {  //제네릭 메서드
		double left = ((Number)p1.getX()).doubleValue();   // (Number) ,  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<Integer, Double>(0, 0.0);  // 정수와 실수
		Point<Integer, Double> p2 = new Point<>(10, 10.0);  //뒤에 <> 안에는 자료형 안 써도 컴파일러가 넣어준다
		
                // makeRectangle이 static 메서드여서 클래스이름으로 호출 + 제네릭 메서드의 타입을 지정해줌
		double rect = GenericMethod.<Integer, Double>makeRectangle(p1, p2);
		System.out.println("두 점으로 만들어진 사각형의 넓이는 " + rect + "입니다.");
	}
}
Comments