泛型的引入我们来看一个现象 如果我们想实现一对坐标x,y,能让这个x和y接收不同类型的数据,比如
x=10,y=10,x=10.1,y=11.1,x=”东经15度”,y=北纬39度",我们可以想到用Object来接收
class Point{ private Object x;//用Object来接收不同的数据类型 private Object y; public Object getX() { return x; } public Object getY() { return y; } public void setX(Object x) { this.x = x; } public void setY(Object y) { this.y = y; } }
我们发现如果数据对应正确,那没什么问题,那如果用户输入时,想要让用户输入int类型,他输成double类型,我们程序是中是让披着Object的Integer类型向下转换为Integer,但是用户导致是披着Obbject的Double向下转换为Integer就会发生类型转换错误
但是我们发现这种错误是运行时异常,一般我们要将错误提取暴露在编译阶段,就是程序还没有跑起来就报出错误
泛型的语法泛型类的定义
class 类名
{ T x; } class 类名 { T x; E y; }
- 泛型类可以存在多个类型参数,成员变量的类型不一定一致
- 泛型不能接收八大基本类型,只能接收它的包装类
- T,E这种大写用来表示参数类型,可以使用任何字符,但是大写字母是规范
- T表示任意类型 K表示键值对 V表示value值 E表示单个元素
泛型类的使用
类名称 <具体的类> 对象名=new 类名称<>();
使用泛型之后的Point类
class Point
{ private T x;//用Object来接收不同的数据类型 private T y; public T getX() { return x; } public T getY() { return y; } public void setX(T x) { this.x = x; } public void setY(T y) { this.y = y; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)