1 包装类
在 Java 中,由于基本类型不是继承自 Object ,为了在泛型代码中可以支持基本类型, Java 给每个基本类型都对应了 一个包装类型。
例如我们之前的基本数据类型和包装类。
1. 装箱和拆箱
2.自动装箱和自动拆箱
2.泛型
1.什么是泛型
一般的类和方法,只能使用具体的类型 : 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的
代码,这种刻板的限制对代码的束缚就会很大。 ----- 来源《 Java 编程思想》对泛型的介绍。
泛型是在 JDK1.5 引入的新的语法,通俗讲,泛型: 就是适用于许多许多类型 。从代码上讲,就是对类型实现了参数 化。
2.引出泛型
实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个 下标的值?
思路:
1. 我们以前学过的数组,只能存放指定类型的元素,例如: int[] array = new int[10]; String[] strs = new String[10];
2. 所有类的父类,默认为 Object 类。数组是否可以创建为 Object?
问题:以上代码实现后 发现
1. 任何类型数据都可以存放
2. 1 号下标本身就是字符串,但是确编译报错。必须进行强制类型转换
虽然在这种情况下,当前数组任何数据都可以存放,但是,更多情况下,我们还是希望他只能够持有一种数据类 型。而不是同时持有这么多类型。所以,泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译 器去做检查。 此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。
语法如下
注意:
1.Java的泛型不能是基本类型。这是因为泛型在Java中是通过类型擦除来实现的,类型擦除会将泛型类型擦除为其上界或
Object
类型。而基本类型(如 int
、 double
、 char
等)在Java中不是对象,它们是通过值传递的,没有对应的对象类型,因此不能作为泛型参数。 2.不能new泛型类型的数组
3.泛型的上界
在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束
可以进一步限制必须继承某个类才能传入。
4.泛型方法
当你调用的时候,没有自动限定会自动类型推导,如果限定了就按限定的算。