Java语法基础:泛型(Generic)

1、泛型的作用

泛型:允许在定义类、接口时指定类型形参,这个形参健在声明变量、创建变量的、创建对象的时候再确定的(即传入的实际参数类型,也可以称为类型实参)
泛型出现的版本
泛型出现的原因(即为什么要有泛型)
在jdk1.5之前,集合类像ArrayList、LinkList、Set存放的Object类型的,无法对存入的元素进行自检查,在取数据的需要对数据的强制转换,如果一旦集合中存入了不一致的类型,例如存放integer类型的集合中错误存放String类型,就会出现类型转化错误的异常

使用泛型的原因:
当我们从泛型类的对象中取出值的时候,如果不使用泛型需要的步骤是:

  1. 获取到 Object 类型的值
  2. 将 Object 类型的强制转换为 对应的类型,才能使用该类型的相关方法

使用泛型的好处:

  • 获取到泛型指定的类的值,(这里我们不用进行强转,这一步骤交给了虚拟机,即 JVM 会帮我们转换为指定的类)

从上面的步骤看:我们减少了泛型的强转工作

public static void main(String[] args) {
   
		
        List objectList = new ArrayList();
        // 存数据
        objectList .add(5);
        objectList .add(6);
        objectList .add("我是一个字符");
        //取出数据
        for(int i=0;i<objectList.size();i++){
   
            // 在取出前两个的时候可是正常
            //在获取字符的时候,会出现ClassCastException异常,因为这里把强制转化成了Integer类型的
            Integer element = (Integer )objectList.get(i);

            System.out.println("正在取出第"+i+"元素:"+element);
        }
    }

在main方法中执行上面的语句会出现这样的异常ClassCastException

在jdk1.5之后,使用了泛型之后在上面的代码中片段使用泛型声明了intListInteger类型的,在编写阶段就进行检查,intList.add(“我要插入一个字符串”); 这里插入的是一个字符串,无法通过编译。


public static void main(String[] args){
   
	// 这是jdk7之前的写法
	List<Integer> intList = new ArrayList<Integer>();
	// 这是jdk7之后的写法,因为jdk7 的新特性类型推断
	List<Integer> intList = new ArrayList<>();
	// 可以通过编译的
	intList.add(5);
	intList.add(6);
	// 不能通过编译的,在编写阶段就会报错的
	intList.add("我要插入一个字符串");
}

上面的方法在编译阶段就报错,说明集合要求的是Integer类型,传入的是字符串类型
编译阶段就进行报错

上面如何使用泛型

2、泛型的使用

常见的泛型主要作用在普通类

2.1、定义泛型接口、泛型类

定义泛型接口:
常用 TKV等大写的字母去表示泛型,就可以在整个类中将 TK

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值