泛型

来源:互联网 发布:搞笑淘宝网店名字大全 编辑:程序博客网 时间:2024/05/22 16:48

泛型方法的格式:
[访问权限] <泛型> 返回类型 方法名([泛型标识 参数名称]) 抛出的异常

泛型方法的格式:
[访问权限] <泛型> 返回类型 方法名([泛型标识 参数名称]) 抛出的异常

如果B是A的一个子类型(子类或者子接口),而G是具有泛型声明的类或接口,G<B>并不是G<A>的子类型!
List<A>、List<B>、。。。。都是List<?>的子类

可以读取声明为通配符的集合类的对象,不允许向声明为通配符的集合类中写入对象。唯一例外的是null

当实例化泛型类的对象时,指明泛型的类型。指明以后,对应的类中所有使用泛型的位置,
都变为实例化中指定的泛型的类型,如果我们自定义了泛型类,但是在实例化时没有使用,那么默认类型是Object类的

例:

import java.util.ArrayList;import java.util.List;//自定义泛型类public class Order<T> {    private String orderName;    private int orderId;    private T t;    List<T> list = new ArrayList<>();    public void add(){        list.add(t);    }    public  T getT(){        return t;    }    public void setT(T t){        this.t = t;    }

不可以在static方法中使用泛型的声明

//public static void show(){//  System.out.println(t);//  }//  public void info(){        //不可以在try-catch中使用类的泛型的声明//      try{//          //      }catch(T e){//          //      }    }    //声明泛型方法    public static <E> E getE(E e){        return e;    }    //实现数组到集合的复制    public <E> List<E> fromArrayToList(E[] e,List<E> list){        for(E e1 : e){            list.add(e1);        }        return list;    }    public String getOrderName() {        return orderName;    }    public void setOrderName(String orderName) {        this.orderName = orderName;    }    public int getOrderId() {        return orderId;    }    public void setOrderId(int orderId) {        this.orderId = orderId;    }    @Override    public String toString() {        return "Order [orderName=" + orderName + ", orderId=" + orderId                + ", t=" + t + "]";    }}//继承泛型类或泛型接口时,可以指明泛型的类型class SubOrder extends Order<Integer>{}
0 0
原创粉丝点击