2 泛型
-
在定义类或方法时,其中有些内容的类型暂时无法确定
-
但在使用这个类或方法时可以确定
-
如果直接使用Object来表示这个类型,当然使用时,什么类型的对象都可以,但有可能需要下转型
-
例如:使用我们封装的Box
-
定义Box or ArrayBox 不确定未来使用者会存入什么类型对象
-
但我们有希望任何类型都可以存放,就将其中的数据类型设置为Object
-
使用者在使用Box 和 ArrayBox时,可以根据业务逻辑确定要存储数据的类型 String , Car
-
由于Box内部都是用Object表示的类型,所以应用时,需要一定的下转型
-
-
泛型的作用就是可以简化下转型操作
-
泛型的应用分为2部分
-
泛型的定义
-
泛型的使用(确定)
-
2.1 泛型的定义
-
使用场景时(使用前提),当我们定义一个类或定义一个方法时,如果其中有些内容的类型不确定,就可以考虑使用泛型
-
都有可能是哪些内容的类型不确定的呢
-
属性类型
-
方法返回类型
-
方法的参数类型
-
方法中局部变量的类型
-
-
如何使用泛型呢?
-
首先我们可以确定的是, i的类型和j类型和t1方法返回类型相同
-
其次这个类型在使用者使用这个类的时候是可以确定的
-
那么我们就可以用一个名字先代替这个类型,在被使用时再确定
-
泛型定义语法:
//在定义类A的时候,类A中有一些内容的类型不确定,暂时使用字母T来表示 class A<T>{ T i ; T j ; public T t1(){ return i ; } }
-
2.2 泛型的使用
-
当使用者在使用了定义了泛型的类时,需要为泛型确定具体的类型
class A<T>{ T t ; } A<String> a ; new A<String>(); class B extends A<String>{} class B implements A<String>{} public A<String> t1(){}
注意
-
定义类的时候如果设置了泛型
-
使用类的时候可以不指定泛型,如果没有指定泛型,这个泛型默认就是Object类型。
那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~