泛型

泛型

来自瞎搞的枣儿

代码是我自己写的,如果道友发现错误望指出,谢谢~

1.泛型 可在编译时发现错误

2.软件的可靠性,和易读性

  • Public static void max()
  • 将泛型指定为另一类型的子类型 受限的
    例如 public static <E extends Object> void max()

3.泛型方法:or

  • 不使用类型类型参数的泛型称为原始类型 例如ArrayLise
  • 向后兼容ArrayList 向后兼容
    public static <E extends Comparable<E>> void max()

4.原始类型的向后兼容

5.通配符

Tables
非受限通配符等同于?Extends Object
受限通配符? extends T表示T或T的未知子类型
下线通配符? Super T表示T或T的未知父类型

这里写图片描述

6.消除泛型和对泛型的限制

  • 泛型是利用类型消除实现的 —- 编译时使用泛型编译,编译成功后,编译器会将泛型向后兼容装换为原始类型。当翻译泛型类,泛型接口及泛型方法是会将泛型转换为Object;当泛型类型是不受限的,则将其转换为受限类型
  • 泛型并不在JVM中单独成类,所以不能向上转换为基类
  • 泛型使用限制:
    1.不能使用new创建泛型实例;
    2.不能直接使用new创建泛型数组,但可以利用 类似类型转化的方式(会有编译警告)
    这里写图片描述
    3.静态环境下不允许类的参数是泛型。
    (由于泛型类的所有的实例都有相同的运行时类,所以泛 型类的静态变量和方法是被它的所有实例所共享。因此在静态方法、数据域或初始化语句中,未来类 而引用泛型类型参数是非法的)
    这里写图片描述
    4.异常类不能是泛型

demo

import java.util.ArrayList;
import java.util.Random;

/**
 * Title    《Java语言程序设计》  19章课后第十八题
 *  
 * Program  打乱ArrayList,编写以下方法:public static <E> void shuffle(ArrayList<E> list)
 *
 * @time    2017年9月24日      下午9:11:59
 * @author  xu
 *
 */
public class P19_8 {

    /**
     * @param args
     */
    //打乱
    private static int n;
    private static int size;
    public static <E> void shuffle(ArrayList<E> list){
        //Collections.shuffle(list)可以实现同样的功能;
        size=list.size();
        Random r=new Random(System.currentTimeMillis());
        E ob=null;
        for(int i=0;i<list.size();i++){
            do{
                n=r.nextInt(size);
            }while(n==i);

            ob=list.get(i);
            list.set(i, list.get(n));
            list.set(n, ob);
        }

    }

    public static void main(String[] args){
        Random r= new Random(System.currentTimeMillis());
        ArrayList<Integer> ar=new ArrayList<>();
        for(int i=0;i<20;i++){
            ar.add(r.nextInt(999));
        }
        for(int e:ar){
            System.out.print(e+" ");
        }
        System.out.println();
        P19_8.shuffle(ar);

        for(int e:ar){
            System.out.print(e+" ");
        }
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值