首页 > 代码库 > 自定义泛型类

自定义泛型类

1 当实例化泛型类的对象时,指明泛型类的类型。指明之后,对应的类中所有使用泛型的位置,都变为实例化中指定的泛型的类型

2 如果我们自定义了泛型类,但是在实例化时没有使用,那么默认类型是Object类的。

package lianxi3;import java.util.ArrayList;import java.util.List;import org.junit.Test;//自定义泛型类public class Order<T> {    private int orderId;    private String orderName;    private T t;    List<T> list = new ArrayList<T>();    //声明泛型类的方法    public <E>E getE(E e){        return e;    }    //实现数组到集合的复制    public <E>List fromArrtoList(E[]e,List<E> list1){        for(E e1:e){            list1.add(e1);        }        return list1;    }    public void add(){        list.add(t);    }    public int getOrderId() {        return orderId;    }    public void setOrderId(int orderId) {        this.orderId = orderId;    }    public String getOrderName() {        return orderName;    }    public void setOrderName(String orderName) {        this.orderName = orderName;    }    public T getT() {        return t;    }    public void setT(T t) {        this.t = t;    }    @Override    public String toString() {        return "Order [orderId=" + orderId + ", orderName=" + orderName                + ", t=" + t + "]";    }}//1.class SubOrder<T> extends Order<T>{class SubOrder extends Order<Boolean>{    }
@Test //自定义泛型类的使用    public void test3(){        Order<String> o1 = new Order<String>();        o1.setOrderId(32);        o1.setOrderName("fas");        o1.setT("tt");        System.out.println(o1);        o1.add();        //List<String> list1 = o1.list; //o1中的list存放的是String类型的数据        System.out.println(o1.list); //或是System.out.println(list1);        //声明泛型类的方法        Integer i1 = o1.getE(789);        System.out.println("i1="+i1);                //1.SubOrder<Boolean> so = new SubOrder<Boolean>();        SubOrder so = new SubOrder();        so.setOrderId(34);        so.setT(true);        so.add();        so.setT(true);        so.add();        so.setT(false);        so.add();        System.out.println(so.list);    //实现数组到集合的复制        Integer[] in = new Integer[]{3,5,6};        List<Integer> list1 = new ArrayList<Integer>();        o1.fromArrtoList(in, list1);        System.out.println(list1);            }

结果:

Order [orderId=32, orderName=fas, t=tt]
[tt]
i1=789
[true, true, false]
[3, 5, 6]

自定义泛型类