제네릭

dawn·2021년 3월 14일
0

자바

목록 보기
2/9

1.제네릭 메소드

제네릭 메소드는 매개 타입과 리턴 탕비으로 타입 파라미터를 작는 메소드를 말한다.
선언하는 방법은 리턴 타입 앞에 <> 기호를 추가하고 타입 파라미터를 기술한 다음, 리턴 타입과 매개 타입으로 타입 파라미터를 사용하면 된다.

public class Util {
	public static <K,V> boolean compare(Pair<K,V> p1, Pair<K,V> p2) {
		boolean keyCompare = p1.getKey().equals(p2.getKey());
		boolean valueCompare = p1.getValue().equals(p2.getValue());
		return keyCompare&&valueCompare;
	}
}
public class CompareMethodExample {
	public static void main(String[] args) {
		Pair<Integer, String> pair1 = new Pair<>(1, "사과");
		Pair<Integer, String> pair2 = new Pair<>(1, "사과");
		System.out.println(Util.compare(pair1, pair2));
		
	}
}

2. 제한된 타입 파라미터

숫자연산 같은 제네릭 메소드를 만들때는 타입 파라미터에 지정되는 구체적인 타입을 제한할 필요가 있다. 제한된 타입 파라미터를 선언하려면 타입 파라미터 뒤에 extends 키워드를 붙이 상위타입을 명시하면 된다. 상위타입은 클래스 뿐만 아니라 인터페이스도 가능한데 똑같이 extends키워드를 붙여야 한다.

타입 파라미터에 지정되는 구체적인 타입은 상위 타입이거나 상위 타입의 하위 또는 구현 클래스만 가능하다. 단, 메소드의 중괄호 { } 안에서 타입 파라미터 변수로 사용한 경우에는 상위타입만 가능하다.

	public static <T extends Number> int compare(T t1, T t2) {
		Double v1 = t1.doubleValue();
		Double v2 = t2.doubleValue();
		return Double.compare(v1, v2);
	}

* '이것이 자바다'라는 책을 읽고 정리한 내용입니다.

profile
안녕하세요

0개의 댓글