목차

Java; Generic Methods

🗓️

제네릭 메소드

개요

용법 : <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("논리적으로 동동하지 않다!");
        }
    }
}