泛型。

自定义和使用含有泛型的类:

public class Generic<E> {
    private E name;

    public E getName() {
        return name;
    }

    public void setName(E name) {
        this.name = name;
    }
}
public static void main(String[] args) {
      Generic<String> generic=new Generic<>();
      generic.setName("Sam");
        System.out.println(generic.getName());
        Generic<Integer> generic1=new Generic<>();
        generic1.setName(1);
        System.out.println(generic1.getName());
    }

自定义含有泛型的方法。

格式:

  修饰符  <泛型>  返回值类型 方法名 (参数列表【泛型】){方法体}

public class GenericMethod {
    public <T> void show(T t){
        System.out.println(t);
    }
    //静态方法
    public static <T> void staticMethod(T t){
        System.out.println(t);
    }
}
 public static void main(String[] args) {
     GenericMethod genericMethod=new GenericMethod();
     genericMethod.show("Sam");
        genericMethod.show(1);
        genericMethod.show(true);
        GenericMethod.staticMethod("静态方法");
    }

自定义和使用含有泛型的接口:

泛型的通配符:

?:代表任意的数据类型。

使用方式:

  不能

 public static void main(String[] args) {
     ArrayList<String> string=new ArrayList<>();
     string.add("abc");
     string.add("edf");
     ArrayList<Integer> integers=new ArrayList<>();
     integers.add(123);
     integers.add(456);
     show(string);
     show(integers);

    }
    //想让一个方法能遍历上面两个集合。
    public static void show(ArrayList<?> list){
        Iterator<?> iterator= list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }

受限泛型

 泛型的上限限定:  ? extends E  代表使用的泛型只能是E类型的子类/本身

泛型的下限限定: ?super E  代表使用的泛型只能是E类型的父类/本身

猜你喜欢

转载自www.cnblogs.com/zhangyuhao/p/10732151.html