μ λ€λ¦
λͺ¨λ ν΄λμ€νμ
μ λ€λ£° μ μλλ‘ νμ
맀κ°λ³μλ‘ ν΄λμ€/λ©μλλ₯Ό μ μνλ κΈ°λ²
μ λ€λ¦ μμΌλ μΉ΄λ ?
νΉμ νμ§ μμ νμ
μ λ체νλ κΈ°νΈ
μλ°μ μ λ€λ¦ μμΌλμΉ΄λλ νμ
μ μ μ°μ±μ λμ΄λ©΄μλ νμ
μμ μ±μ μ μ§ν μ μλλ‘ λμμ€λλ€.
μ¬μ© λ°©λ²
ν΄λμ€νμ
<?> κ°μ²΄λͺ
;
Java
볡μ¬
μ’
λ₯ | μ μΈ λ°©μ | μλ―Έ |
(?) | List<?> | λͺ¨λ νμ
μ μμλ₯Ό νμ©νμ§λ§, μ½κΈ° μ μ© |
μν μ ν(? extends T) | List<? extends Number> | Number λλ κ·Έ νμ ν΄λμ€λ§ νμ© (μ½κΈ° μ μ©) |
νν μ ν(? super T) | List<? super Integer> | Integer λλ κ·Έ μμ ν΄λμ€λ§ νμ© (μ°κΈ° κ°λ₯) |
μμ μ½λ
μμΌλ μΉ΄λ κΈ°λ³Έ μμ μ½λ
import java.util.*;
public class WildcardExample {
public static void printList(List<?> list) {
for (Object obj : list) {
System.out.println(obj);
}
}
public static void main(String[] args) {
List<String> stringList = Arrays.asList("A", "B", "C");
List<Integer> intList = Arrays.asList(1, 2, 3);
printList(stringList);
printList(intList);
}
}
Java
볡μ¬
μν μ ν μμΌλμΉ΄λ (? extends T)
import java.util.*;
public class WildcardExample {
public static double sum(List<? extends Number> list) {
double sum = 0.0;
for (Number num : list) { // Numberλ‘ μ½κΈ° κ°λ₯
sum += num.doubleValue();
}
return sum;
}
public static void main(String[] args) {
List<Integer> intList = Arrays.asList(1, 2, 3);
List<Double> doubleList = Arrays.asList(1.1, 2.2, 3.3);
System.out.println(sum(intList)); // μΆλ ₯: 6.0
System.out.println(sum(doubleList)); // μΆλ ₯: 6.6
}
}
Java
볡μ¬
νν μ ν μμΌλμΉ΄λ (? super T)
import java.util.*;
public class WildcardExample {
public static void addNumbers(List<? super Integer> list) {
list.add(10);
list.add(20);
// list.add(3.5); // β μ»΄νμΌ μ€λ₯: Doubleμ Integerμ νμ ν΄λμ€κ° μλ
}
public static void main(String[] args) {
List<Number> numList = new ArrayList<>();
addNumbers(numList);
System.out.println(numList); // μΆλ ₯: [10, 20]
}
}
Java
볡μ¬