泛型

泛型

1.概念

用来约束容器只能存放某种类型的数据

2.基本使用

//此list只能存放Employee类型的对象

ArrayList<Employee> list = new ArrayList<Employee>();

list.add(new Employee("小王"));

list.add(new Employee("中王"));

list.add(new Employee("老王"));

3.自定义泛型

1.泛型类

(类 接口) ---->比如模拟ArrayList这样的结构   class Demo<泛型符号>{         }

泛型符号  可以是任意的符号,一般使用如下的字母:

E  ------- Element

T  -------Type

K  -------Key

V  -------Value

设计一个类来描述一个点,但是该类的点数据类型不确定

public class Point<T,K> {

    private T x;

    private K y;

    public Point(T x, K y) {

        super();

        this.x = x;

        this.y = y;

    }

}

2.泛型方法

设计一个泛型方法,一个方法设计的时候,声明了泛型,在使用的时候才具体执行类型,传入一个数组,在方法内部,复制一份数组副本,将数组,排序之后返回

public static <T> T[] getArr(T[] src){//src.getClass()知道具体类型就可以创建数组了

    Object[] copyOf = Arrays.copyOf(src, src.length, src.getClass());  
    Arrays.sort(copyOf);
    return ( T[] )copyOf;

}

4.4泛型的上限和下限

  1. ?表示未知的类型
  2.   泛型的上限  约束传入的类型 最高为什么类型  ? extends  类型
  3.   泛型的下限  约束传入的类型最低为什么类型   ?  super  类型
public class GenericTest2 {

/*

 * 泛型的上限和下限

 * */

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>();

        ArrayList<Integer> list1 = new ArrayList<Integer>();
    
        ArrayList<Double> list2 = new ArrayList<Double>();

        ArrayList<Object> list3 = new ArrayList<Object>();

        //show(list);//Number及其子类才能调用该方法,String不是,所以报错

        show(list1);

        show(list2);

        test(list3);//Number及其父类才能调用该方法,Object是,所以正确

    }

        public static void show(List<? extends Number> list){

        }

        public static void test(List<? super Number> list){

        }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值