【Java】Java语言基础之泛型

泛型

泛型,本质意义为参数化类型,看起来比较抽象,更细致的解释为将所操作的数据类型作为参数的一种语法。

public class Test<T>{	
	T Test(){}   
    }	

在这里中括号里面的T就是作为一个参数在Test被实例化的时候所传递过来的参数。

Test<Integer> TestInteger = new Test<>()

这的T就被实例化为Integer

作用

看一下这个例子:

import java.util.ArrayList;
import java.util.List;

public class Test2 {
     public static void main(String[] args) {
 	 List list = new ArrayList();
  	 list.add("xiaohuangji");
 	 list.add("kayou");
 	 list.add(10000);
  
  	 for (int i = 0; i < list.size(); i++) {
  	 	String name = (String)list.get(i);
  	 	System.out.println("name:"+name);
  	}
   }
}

这里定义了一个List集合,向里面添加了三个值,前俩个值为String类型的值,最后添加的为Integer类型的值,这是完全被允许的,因为这个时候list集合的默认类型为Object类型。但是在随后的循环输出的时候,将list中的值取出来类型强制转换时会报出ClassCastException的异常。这类错误只有在编译运行的时候才会发现,在编码的过程中不易发现。

经过上面的编码过程中,主要存在俩个问题:
  1. 将一个对象放入集合里面,集合不会记住这个对象的类型,当再次从集合中取出此对象时,这个对象变成了Object类型,但他运行的时候的类型仍旧时其本身的类型。
  2. 去除元素的时候需要进行强制类型转换到具体的目标类型,而且很容易出现ClassCastException的异常。
泛型的作用:
  1. 泛型的设计主旨在于让程序员写出更加通用化且灵活的代码。

  2. 泛型将代码安全性检查提前到了编译器。

  3. 泛型可以省去类型强制转换。

—————————分割线————————————————————————————————
以上内容都是目前所理解的,非最终版本,会根据工作和学习的深入慢慢加深理解,更新在上面(2020.5.22版)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值