제네릭 메소드
개요
용법 : <T, R> R method(T t)
제네릭 메소드는 매개 타입과 리턴 타입으로 타립 파라미터를 갖는 메소드를 말한다. 제네릭 메소드를 선언하는 방법은 리턴 타입 앞에 <>
기호를 푸가하고 타립 파라미터를 기술한 다음, 리턴 타입과 매개 타입으로 타입 파라미터를 사용하면 된다.
// 대강의 형태
public <제네렉타입> 리턴타입 메소드명(파라미터...) {...}
// 실제 사용
public <T> List<T> list(T t) {...}
제네릭 메소드는 두 가지 방식으로 호출 할 수 있다.
List<String> elements = <String> list("string.."); // 명시
List<String> elements = list("string.."); // 추정
예제코드
public class Pair<K, V> {
private K key;
private V value;
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
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 valurCompare = p1.getValue().equals(p2.getValue());
return keyCompare && valurCompare;
}
}
public class CompareMethodExample {
public static void main(String[] args) {
Pair<Integer, String> p1 = new Pair<Integer, String>(1, "플라");
Pair<Integer, String> p2 = new Pair<Integer, String>(1, "플라");
boolean result1 = Util.<Integer, String>compare(p1, p2); // 타입 명시
if (result1) {
System.out.println("논리적으로 동등하다!");
} else {
System.out.println("논리적으로 동동하지 않다!");
}
Pair<String, String> p3 = new Pair("platanus1", "플라");
Pair<String, String> p4 = new Pair("platanus2", "플라");
boolean result2 = Util.compare(p3, p4); // 타입 추정
if (result2) {
System.out.println("논리적으로 동등하다!");
} else {
System.out.println("논리적으로 동동하지 않다!");
}
}
}