java泛型知识点总结

1.泛型的基本应用
泛型可以解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。
这样在类声明或者实例化时只要指定好需要的类型即可。
[访问权限] class 类名称 <泛型类型标识1,泛型类型标识2,...,泛型类型标识3>{
[访问权限] 泛型类型标识 变量名称;
[访问权限] 泛型类型标识 方法名称(){};
[访问权限] 返回值类型声明 方法名称 (){泛型类型标识 变量名称};
}

在泛型的指定中是无法指定基本数据类型的,必须设置成一个类,这样在设置一个数字时就必须使用包装类。
如果设置的内容与泛型所指定的类型不一致,则在编译时会出错。
加入泛型的最大好处实际上就是避免了类转换异常(ClassCastException)的发生,这样将使程序的操作更加安全。
2.泛型应用中的构造方法
构造方法可以为类中的属性初始化,那么如果类中的属性通过泛型指定 ,而又需要通过构造设置属性内容时,构造方法的定义与之前并无不同,不需要像声明类那样指定泛型。 
[访问权限] 构造方法 ([<泛型类型> 参数名称]){
}
3.指定多个泛型类型
如果一个类中有多个属性需要使用不同的泛型声明,则可以在声明类时指定多个泛型类型。
在泛型应用中最好在声明类对象时指定好其内部的数据类型,如Info<String>,如果不指定类型,这样在使用这样的类时,就会出现不安全的警告信息。
4.通配符
(1)匹配任意类型的通配符
通配符"?"表示可以接收此类型的任意泛型对象。
(2)受限泛型
在引用传递中,在泛型操作中也可以设置一个泛型对象的范围上限和范围下限。
范围的上限使用extends关键字声明,表示参数化的类型可能是所指定的类型或者是此类型的子类。
声明对象: 类名称 <? extends 类> 对象名称
定义类:  [访问权限] 类名称 <泛型标识 extends 类>{}
范围下限使用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,或者是Obeject类。
声明对象: 类名称 <? super 类> 对象名称
定义类:  [访问权限] 类名称 <泛型标识 super 类>{}
5.泛型与子类继承的限制
一个类的子类可以通过对象多态性为其父类实例化,但是在泛型操作中,子类的泛型类型是无法使用父类的泛型类型接收的。例如Info<String>不能使用Info<Object>接收。
如果将子类泛型变为父类泛型,则表示扩大了子类的内容。
6.泛型接口
[访问权限] interface 接口名称<泛型标识>{
}
例子:   interface Info<T>{
public T getVar();
}
泛型接口实现的两种实现方式
泛型接口定义完成之后,就要定义此接口的子类,定义泛型接口的子类有两种方式,一种是直接在子类后声明泛型,另一种是直接在子类实现的接口中明确的给出泛型类型。
在JDK1.5之后实际上很多的接口都加入了泛型的支持,这样在使用这些接口时为了防止安全警告信息的出现,都要指定具体的泛型类型。
7.泛型方法
(1)泛型方法的简单定义
[访问权限] <泛型标识> 泛型标识 方法名称 ([泛型标识 参数名称])
例子: public <T> T get(T t){
return t;
 }
(2)如果泛型方法返回一个泛型的实例化对象,则必须在方法的返回类型声明处明确的指定泛型标识
例子:public static <T extends Number> Info<T> get(){
Info<T> temp = new Info<T>();
return temp;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值