泛型介绍

一、概念

泛型就是可以表示一个广泛数据类型的类型参数(泛型只能表示引用类型),把数据类型作为参数来传递。

形式参数:声明方法时,在方法的参数列表中声明,而且在方法体中会使用到,但是是一个未知的数据

类型参数:在一个类中声明一个未知的数据类型,在类中可以使用这个类型,但是具体类型取决于实例化时传入的实际类型

 

二、泛型的声明

1)泛型可以声明在方法中:(泛型方法)

public static <标识符> void fun(){}

2)泛型可以声明在类中:(泛型类)

public class 类名<标识符>{

//类体

//泛型可以在类中充当成员变量

//泛型可以再类中充当方法的返回值

//泛型可以在类中充当方法的参数

}

3)泛型可以声明在接口中:(泛型接口)

public interface 接口名<标识符>{

//泛型可以充当接口中方法的返回值

//泛型可以充当接口中方法的参数

}

 

三、泛型说明

1)标识符(占位符):只要是一个合法的标识符即可,一般情况下,只使用一个大写字母表示泛型

例:public class Person<T>{} E(Element) K(key) V(value)

2)泛型的类型与声明的类或接口不需要有任何的关系

3)泛型可以在类中充当任何的成员

4)泛型具体类型取决于实例化对象时传入的实际类型

 

四、泛型使用时注意事项

1)泛型不能在类中声明静态属性、常量

final修饰的属性必须在声明的同时初始化,所以泛型不能声明常量

static修饰的属性是静态属性,先于对象,泛型类型取决于创建对象时传入的实际类型,所以泛型不能声明静态属性

综上所述:不能使用泛型声明静态属性、常量

2)泛型不能在类中初始化数组,但是可以声明数组

初始化数组时需要给元素进行分配空间,但是泛型类型不确定无法分配空间

3)在类中不能使用泛型声明参数个数相同的重载方法

当一个类中有两个泛型时,创建对象时,两个泛型使用相同类型替换,那么重载方法就是相同的方法(同名,参数列表也相同)

4)使用不同实际类型创建出的泛型类对象的引用不可以相互赋值

 

五、泛型受限

1)<?>:表示任意类型

2)<? extends T>:表示T类或者T类的子类

3)<? super T>:表示T类或者T类的父类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值