泛型
作用:可以解决数据类型的安全性问题
怎么说呢,所有类都可以向上转型为Object,但是真正用的时候就可以类型转错了。但是如果定义泛型就不会有这个问题。
比如Point《String》 p = new Point《String》()
这样只能输入字符串类型
泛型类定义格式
class 类《T》 {
修饰符 《T》 属性;
public 《T》 getter() ;
}
通过构造方法设置内容
class Point {
private T var
public Point(T var){
this.var = var
}
}
定义多个泛型
class Point{
private T var;
private K key;
}
泛型的安全警告
在泛型应用中最好在声明类对象的时候指定好其内部的数据类型
如“Info
通配符?
使用?可以接收任意的内容,但是此内容却无法修改
示例代码:
Info> i = new Info()
i.setVar("nihao") //会报错
受限泛型,方法和类都可以使用
《T extends Info》 :只能是Info或者其子类
泛型与子类继承的限制
一个类的子类可以通过对象多态性,为其父类实例化,但是在泛型操作中,子类的泛型类型是无法使用父类的泛型类型接受。
例如:Info
泛型其他应用
泛型接口的定义
interface Info {
public T getVar()
}
泛型接口实现的两种方式
第一种: 示例代码
class InfoImpl implements Info{
}
第二种:
class InfoImpl implements Info{
}
泛型方法
跟类是不是泛型类没关系
示例代码:
class Demo{
public T fun(T t){
return t;
}
}
可以看着声明T是什么
通过泛型方法返回泛型类的实例
public static Info fun(){
Info temp = new Info()
temp.setVar(param)
return temp
}
泛型数组
public static void fun2(T param[]){
for(T t:param){}
}
使用 fun2(Integer i[])
泛型的嵌套使用
Demo> d = null
Info i = null
i = new Info("wold",11)
d = new Demo>(i)