Generic Methods
μ λ€λ¦ λ©μλλ μ ν 맀κ°λ³μλ₯Ό μ¬μ©νμ¬ μμ±νλ€.
μ΄λ λ°ν μ ν μμ μ ν 맀κ°λ³μλ‘ μ μΈν΄μ€λ€.
μ κ·Όμ μ΄μ <νμ
νλΌλ©ν°> 리ν΄νμ
λ©μλλͺ
(맀κ°λ³μ, ...) {
/* statement */
}
μ μ λ° λΉ μ μ μΈ μ λ€λ¦ λ°©λ²μ λ¬Όλ‘ μ λ€λ¦ν ν΄λμ€ μμ±μλ νμ©νλ€.
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 same1 = Util.<Integer, String>compare(p1, p2);
μλμ κ°μ΄ νμ
μΆλ‘ μ μ΄μ©νμ¬ <>
μμ΄ μ¬μ© κ°λ₯νλ€.
boolean same1 = Util.compare(p1, p2);
Type Inference (νμ μΆλ‘ )
κ° λ©μλμ νΈμΆκ³Ό ν΄λΉ μ μΈμ κ²ν νμ¬ νΈμΆμ΄ κ°λ₯νλλ‘ νλ Java μ»΄νμΌλ¬μ κΈ°λ₯μ΄λ€.
μ»΄νμΌνμμ κ²°μ λλ€.
β Generic Types Bounded Type Parameters β