제네릭 메소드

JAVA/JAVA 2017. 5. 17. 17:08 |

제네릭 메소드(Generic method)


제네릭 메소드에 대해 전에 간단하게 포스팅 했었는데 오라클 레퍼런스 설명 기반으로 포스팅하려고 한다.

제네릭 메서드는 타입매개변수를 가진 메소드이다. 제네릭타입을 선언하는 것과 비슷하지만 타입매개변수의 스코프는 매서드로 제한된다.(?)


제네릭 메서드 문법은 return 타입 전에 <>사이 타입에 타입매개변수를 표기한다.

static generic 메서드를 위해 타입매개변수는 반드시 메서드의 return타입 이전에 위치해야한다.


아래의 코드를 보면

Util 클래스는 두 Pair 객체를 비교하는 generic 메소드를 포함하고 있다. 




public class Util {
    public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) {
        return p1.getKey().equals(p2.getKey()) &&
               p1.getValue().equals(p2.getValue());
    }
}

public class Pair<K, V> {

    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public void setKey(K key) { this.key = key; }
    public void setValue(V value) { this.value = value; }
    public K getKey()   { return key; }
    public V getValue() { return value; }
}

두 메소드를 호출한 문장은 아래와 같다.

Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.<Integer, String>compare(p1, p2);


Util.<Integer, String>compare(p1, p2);

<>안에 타입을 명시하여 타입인자는 컴파일러가 타입 추론한다. <>안에 타입 명시하지 않고 generic 메서드가

아닌 일반 메서드를 호출해도 타입추혼이 이루어 진다. 




'JAVA > JAVA' 카테고리의 다른 글

jvm 메모리 구조  (0) 2019.04.22
[객체지향] JAVA SOLID 원칙  (0) 2019.02.23
제네릭 개념 알기  (0) 2017.05.16
다형성  (0) 2015.08.28
클라이언트 ip 구하기  (0) 2015.08.13
Posted by 양승아
: