Genericμ λν΄μ(with. Java)
βGenericμ λν΄μβ λ¬Έμ μ λνμ¬ μμλ³Έ κΈμ λλ€.
λ€λ₯Έ λΆλ€μ μμ
λ¬Όμ ꡬ경νλ μ€
νλΆμ μμ μ μ μΈμ΄(Java, C λ±)μ νμ΅νλ©° λ΄€λ κΈ°μ΅μ΄ μμ΅λλ€.
μκ°μ΄ νλ¬ λ€μ ν λ² μ λλ‘ μμ보μ 곡μ νκ³ μ ν©λλ€.
κ°λ
μ λ€λ¦(Generic)μ μλ° νλ‘κ·Έλλ° μΈμ΄μ μ€μν νΉμ§ μ€ νλμ λλ€.
μ΄λ ν΄λμ€λ λ©μλλ₯Ό μ μν λ νμ μ νλΌλ―Έν°ννλ κΈ°λ₯μ μ 곡ν©λλ€.
μ λ€λ¦μ μ¬μ©νλ©΄ ν΄λμ€λ λ©μλλ₯Ό μ μΈν λ νμ μ μ§μ νμ§ μκ³ , μ¬μ©ν λ ꡬ체μ μΈ νμ μ μ§μ ν μ μμ΅λλ€.
μ΄λ₯Ό ν΅ν΄ μ½λμ μ¬μ¬μ©μ±κ³Ό νμ μμ μ±μ λμΌ μ μμ΅λλ€.
μ λ€λ¦μ κΈ°λ³Έ ꡬ쑰
μλ°μμ μ λ€λ¦μ μ¬μ©νλ €λ©΄ ν΄λμ€, μΈν°νμ΄μ€, λ©μλλ₯Ό μ μν λ νμ 맀κ°λ³μλ₯Ό μ¬μ©ν©λλ€.
νμ 맀κ°λ³μλ λ°μ΄ν° νμ μ μΌμ’ μΌλ‘, μ€μ μ¬μ©λ λ ꡬ체μ μΈ νμ μΌλ‘ λ체λ©λλ€.
- ν΄λμ€μμ μ λ€λ¦ μ¬μ©
public class Box<T> {
private T data;
public void setData(T data) {
this.data = data;
}
public T getData() {
return data;
}
}
μμ μμ μμ Box ν΄λμ€λ μ λ€λ¦μ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό λ΄λ μμλ₯Ό ννν©λλ€.
Tλ νμ 맀κ°λ³μλ‘, ν΄λμ€λ₯Ό μ€μ λ‘ μ¬μ©ν λ μ΄λ€ νμ μ λ°μ΄ν°λ₯Ό λ€λ£° κ²μΈμ§λ₯Ό λνλ λλ€.
- λ©μλμμ μ λ€λ¦ μ¬μ©
public <T> T findFirst(List<T> list) {
if (list != null && !list.isEmpty()) {
return list.get(0);
}
return null;
}
μμ μμ μμ findFirst λ©μλλ μ λ€λ¦μ μ¬μ©νμ¬ λ¦¬μ€νΈμ 첫 λ²μ§Έ μμλ₯Ό λ°νν©λλ€.
λ©μλ μ μΈμμ
μ λ€λ¦μ μ₯μ
νμ μμ μ±(Type Safety): μ λ€λ¦μ μ¬μ©νλ©΄ μ»΄νμΌλ¬κ° μ½λμμ νμ κ΄λ ¨ μ€λ₯λ₯Ό μ‘μλ΄κΈ° μ¬μμ§λλ€. λ°νμ μμ μ λ°μν μ μλ νμ λ³ν μ€λ₯λ₯Ό μ»΄νμΌ μμ μ μ‘μ μ μμ΅λλ€.
μ½λ μ¬μ¬μ©μ±: μ λ€λ¦μ μ¬μ©νλ©΄ νλμ ν΄λμ€λ λ©μλλ₯Ό μ¬λ¬ μ’ λ₯μ νμ μ λν΄ μ¬μ©ν μ μμ΅λλ€. μ½λμ μ¬μ¬μ©μ±μ΄ λμμ§λλ€.
μκ³ λ¦¬μ¦μ μΌλ°ν: μ λ€λ¦μ ν΅ν΄ μκ³ λ¦¬μ¦μ λ μΌλ°μ μΌλ‘ μμ±ν μ μμ΅λλ€. νΉμ νμ μ μμ‘΄νμ§ μκ³ λ€μν νμ μμ μ¬μ©ν μ μλ μκ³ λ¦¬μ¦μ μμ±ν μ μμ΅λλ€.
μ λ€λ¦μ μμ
public class Main {
public static void main(String[] args) {
// Box ν΄λμ€λ₯Ό νμ©ν μ λ€λ¦ μμ
Box<String> stringBox = new Box<>();
stringBox.setData("Hello, Generics!");
String data = stringBox.getData();
System.out.println(data);
// μ λ€λ¦ λ©μλλ₯Ό νμ©ν μμ
List<Integer> integerList = List.of(1, 2, 3, 4, 5);
Integer firstElement = findFirst(integerList);
System.out.println("First element: " + firstElement);
}
public static <T> T findFirst(List<T> list) {
if (list != null && !list.isEmpty()) {
return list.get(0);
}
return null;
}
}
μμ μμ μμ Box ν΄λμ€λ₯Ό ν΅ν΄ λ¬Έμμ΄ λ°μ΄ν°λ₯Ό λ΄μ μμλ₯Ό λ§λ€κ³ , findFirst λ©μλλ₯Ό ν΅ν΄ μ μ 리μ€νΈμ 첫 λ²μ§Έ μμλ₯Ό μ°Ύμ΅λλ€.
μ΄λ¬ν μμ λ₯Ό ν΅ν΄ μ λ€λ¦μ΄ μ΄λ»κ² μ¬μ©λλμ§ κ°μ μ‘μ μ μμ΅λλ€.
κ²°λ‘
μ λ€λ¦μ μλ°μμ κ°λ ₯ν κΈ°λ₯ μ€ νλλ‘, μ½λμ μ¬μ¬μ©μ±κ³Ό νμ μμ μ±μ λμ¬μ€λλ€.
ν΄λμ€, μΈν°νμ΄μ€, λ©μλλ₯Ό μ μν λ νμ μ νλΌλ―Έν°ννμ¬ λ€μν νμ μ λν΄ μ μ°νκ² λμ²ν μ μμ΅λλ€.
μ λ€λ¦μ νμ©νλ©΄ μ»΄νμΌλ¬κ° λ λ§μ μ€λ₯λ₯Ό μ¬μ μ κ²μΆν μ μμΌλ©°, μ½λμ μΌλ°μ±κ³Ό νμ₯μ±μ μ¦κ°μν¬ μ μμ΅λλ€.
μλ° νλ‘κ·Έλλ¨Έλ€μ μ λ€λ¦μ μ μ ν νμ©νμ¬ λ κ°κ²°νκ³ μμ μ μΈ μ½λλ₯Ό μμ±ν μ μμ΅λλ€.