Java中泛型通配符的使用

    科技2022-07-10  123

    J a v a Java Java中泛型通配符的使用

    ? ? ? 表示。

    package 泛型; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class MaInClass { public static void main(String[] args) { Collection<String> col1 = new ArrayList<>(); col1.add("adada"); col1.add("bbbbb"); col1.add("ccccc"); col1.add("ddddd"); Collection<Integer> col2 = new ArrayList<>(); col2.add(123); col2.add(444); col2.add(11111); col2.add(5555); fun(col1); fun(col2); Collection<Number> col3 = new ArrayList<>(); Collection<Object> col4 = new ArrayList<>(); } public static void fun(Collection<?> col) { Iterator<?> it = col.iterator(); while(it.hasNext()){ Object o = it.next(); System.out.println(o); } } } adada bbbbb ccccc ddddd 123 444 11111 5555

    2. ? ? ?另外的两个用法

    < ?   e x t e n d s   C l a s s > <?\ extends\ Class> <? extends Class> 只能使用 C l a s s Class Class及其子类 < ?   s u p e r   C l a s s > <?\ super\ Class> <? super Class> 只能使用 C l a s s Class Class及其父类

    package 泛型; import java.util.ArrayList; import java.util.Collection; public class MaInClass { public static void main(String[] args) { Collection<String> col1 =new ArrayList<>(); Collection<Integer> col2 =new ArrayList<>(); Collection<Number> col3 =new ArrayList<>(); Collection<Object> col4 =new ArrayList<>(); fun(col3); fun(col2); fun(col4); //只能使用Number的子类,会报错 fun1(col3); fun1(col4); fun1(col2);//只能使用Number的父类,会报错 } public static void fun(Collection<? extends Number> col){ } public static void fun1(Collection<? super Number> col){} }
    Processed: 0.018, SQL: 8