본문 바로가기
Java 배우기

Generic Methods

by 노화방지 Anti-aging Hairstyle 2016. 1. 24.
반응형

Generic Methods

제네릭 메소드는 자신의 타입 패러미터를 소개하는 메소드입니다. 
제네릭 메소드는 제네릭 타입 선언과 유사하지만, 타입 파라미터의 범위가 선언된 메소드 안으로 한정됩니다.
스테틱 및 비-스테틱 제네릭 메소드가 허용되며 제네릭 클래스 생성자도 허용됩니다.
제네릭 메소드의 신택스에는 타입 패러미터, 내부 앵글 괄호가 포함되며, 메소드의 리턴 타입 앞에 나타납니다.
스테틱 제네릭 메소드의 경우, 타입 패러미터 섹션은 메서드의 리턴 타입 앞에 나타나야 합니다.

Util 클래스는 제네릭 메소드 compare를 포함하는데 이것은 2개의 Pair 객체를 비교합니다:
Generic methods are methods that introduce their own type parameters. This is similar to declaring a generic type, but the type parameter's scope is limited to the method where it is declared. Static and non-static generic methods are allowed, as well as generic class constructors.

The syntax for a generic method includes a type parameter, inside angle brackets, and appears before the method's return type. For static generic methods, the type parameter section must appear before the method's return type.

The Util class includes a generic method, compare, which compares two Pair objects:

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; }
}

The complete syntax for invoking this method would be:

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

The type has been explicitly provided, as shown in bold. Generally, this can be left out and the compiler will infer the type that is needed:

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

This feature, known as type inference, allows you to invoke a generic method as an ordinary method, without specifying a type between angle brackets. This topic is further discussed in the following section, Type Inference.


반응형

'Java 배우기' 카테고리의 다른 글

Generic Methods and Bounded Type Parameters  (0) 2016.01.24
Bounded Type Parameters  (0) 2016.01.24
Raw Types  (0) 2016.01.24
제네릭 타입 Generic Types  (0) 2016.01.24
Why Use Generics? 제네릭스를 사용하는 이유  (0) 2016.01.24

댓글