Generic Types
μ λ€λ¦ νμ μ μ λ€λ¦ ν΄λμ€λ μΈν°νμ΄μ€μ νμμ λ°λΌ 맀κ°λ³μλ‘ νμλλ€.
class name <T1, T2, ..., Tn> { ... }
Naming Conversion
μ λ€λ¦ νμ μ μ무 λ¬Έμμ΄μ΄λ μ¬μ©κ°λ₯νμ§λ§ κ°λ μ±μ μν΄ μΌλ°μ μΌλ‘ λ€μ κ·μΉμ λ°λ₯Έλ€.
ν€ | μ€λͺ |
---|---|
E | μμ(Element) |
K | ν€(Key) |
N | μ«μ(Number) |
T | νμ (Type) |
V | κ°(Value) |
S, U, V | λλ²μ§Έ, μΈλ²μ§Έ, λ€λ²μ§Έμ μ μΈλ νμ |
Java SE 1.7+
The DiamondJava SE 7 μ΄ν λ²μ μμλ λ€μ΄μλͺ¬λ μ°μ°μλ‘ μΈν μ΄κΈ°νκ° κ°λ₯νλ€.
μ΄λ μ λ€λ¦ μΈμ€ν΄μ€μ μμ±μ μλμΌλ‘ μ μ©ν΄μ€λ€.
μλμ κ°μ μ΅λͺ ν΄λμ€μμμ μΈμ€ν΄μ€νλ μ¬μ© λΆκ°λ₯
List<String> list = new ArrayList<>() {};
Multiple Type Parameters
μΌλ° ν΄λμ€λ λ€μ€ ν΄λμ€μ 맀κ°λ³μλ‘ κ°μ§μ μλ€.
public interface Pair<K, V> {
public K getKey();
public V getValue();
}
public class OrderedPair<K, V> implements Pair<K, V> {
private K key;
private V value;
public OrderedPair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() { return key; }
public V getValue() { return value; }
}
Parameterized Types
맀κ°λ³μν νμ (Parameterized Type) μ¬μ©μμλ λ€μ λκ°μ§λ‘ λλμ΄μ§λ€.
- Actual Type Parameter
μ€ νμ
맀κ°λ³μ (Actual Type Parameter) λ <>
μμ μ€μ¬μ© νμ
μ체λ₯Ό λͺ
μ ν΄μ£Όλ λ°©μμ΄λ€.
List<String> list = new ArrayList<>();
- Formal Type Parameter
νμ νμ
맀κ°λ³μ (Formal Type Parameter) νμ
맀κ°λ³μλ <>
μμ λͺ
μμ νμ
μ μ£Όλ λ°©μ μ΄λ€.
List<E> list = new ArrayList<>();
μλμ κ°μ΄ 맀κ°λ³μλ₯Ό 맀κ°λ³μν νμ μΌλ‘ λ체 κ°λ₯νλ€.
OrderedPair<String, Box<Integer>> p = new OrderedPair<>("primes", new Box<Integer>(...));
Raw Types
Raw Type μ νμ νλΌλ©ν°κ° μλ μ λ€λ¦ νμ μ λ§νλ€.
public class Message<T> {
public List<String> getMessage() {
return Arrays.asList("MESSAGE");
}
public static void main(String[] args) {
Message message = new Message();
for (String str : message.getMessage()) {
System.out.println(str);
}
}
}
μ μ½λμμ message
λ³μκ° Raw Type
λ³μμΈλ°
Message
ν΄λμ€λ μ λ€λ¦ νμ
μΌλ‘ μ μλμμ§λ§ λ³μ message
λ νμ
νλΌλ©ν° μμ΄ μ μλμλ€.
μ΄λ μ λ€λ¦μ νμ
μκ±°λ‘ μΈνμ¬ List<String>
μ΄ μλ Raw Type List
λ‘ λκ²μ΄λ€.
νμ μκ±°λ J2SE 5 μ λ€λ¦ μΆν μ΄μ μ μ½λμ νΈνμ±μ 보μ₯νκΈ° μν κ²μΌλ‘ Raw Type μ μ¬μ©νμ§ λ§μμΌ νλ€.
β Generics Generic Methods β