利用对象的多态性,可以解决方法参数统一的问题,但是随之而来的就是另外一个问题:并不是所有的向下转型都是安全的。从JDK 1.5开始提供了泛型技术,可以有效的解决这一问题
泛型类
如果要开发一套地理信息系统,必定存在描述精度和纬度的数据,可以有三种数据类型:
- 整型
- 浮点型
- 字符串
相应的,如果要统一参数类型,就会存在三种转型关系:
- int型自动封装成Integer,向上转型为Object,Object向下转型为Integer,Integer拆封成int
- double->Double>Objec, Object->Double->double-
- String->Object,Object->String
代码如下:
1 | class Point<T>{ |
使用泛型后,类中的属性都是动态设置的,从而避免了向下转型的不安全性。
能够采用泛型的只能够是引用类型,不能是基本类型
泛型接口
除了类可以设置泛型,接口也可以设置泛型
在子类继续设置泛型标记,代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15interface Message<T>{
public void print(T t);
}
class SonMessage<S> implements Message<S>{
public void print(S t) {
System.out.println(t);
}
}
public class testDemo7{
public static void main(String args[]) {
Message<String> m=new SonMessage<>();
m.print("hello");
}
}
也可以在子类中不设置泛型,可以明确定义一个泛型类型,代码如下:
1 | interface Message<T>{ |
泛型方法
代码如下:
1 | public class testDemo7{ |
