关闭

泛型及其应用

335人阅读 评论(25) 收藏 举报
分类:

什么是泛型

  对象建立时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定具体类型;

为什么使用泛型

  Object类是一切数据类型的父类,可以接收任何类型的数据,都会发生向上转型操作。

class Point{
	private Object x ;		// 表示X坐标
	private Object y ;		// 表示Y坐标
	public void setX(Object x){
		this.x = x ;
	}
	public void setY(Object y){
		this.y = y ;
	}
	public Object getX(){
		return this.x ;
	}
	public Object getY(){
		return this.y ;
	}
};

public class GenericsDemo04{
	public static void main(String args[]){
		Point p = new Point() ;	// 声明一个Point的对象
		p.setX(10) ;			// 利用自动装箱操作:int --> Integer --> Object
		p.setY("北纬210度") ;		// String --> Object
		int x = (Integer)p.getX() ;	// 取出数据先变为Integer,之后自动拆箱
		int y = (Integer)p.getY() ;	// 取出数据先变为Integer,之后自动拆箱
		System.out.println("整数表示,X坐标为:" + x) ;
		System.out.println("整数表示,Y坐标为:" + y) ;
	}
};

  代码中x,会自动发生装箱操作,并向上转型为Object类型,同理y也是。但是在拆箱的时候,y出现类型转换错误。

  一方面拆箱装箱消耗性能。另一方面它不会再编译时出错,而是在运行时,因此不安全。


泛型的应用

  解决数据类型的安全性问题。在类声明时通过一个标识表示类中某个属性的类型或者某个方法的返回值及参数类型。在实例化时指定具体类型即可。

  它会将类型错误发现在编译时。


1
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:143706次
    • 积分:10991
    • 等级:
    • 排名:第1445名
    • 原创:171篇
    • 转载:1篇
    • 译文:1篇
    • 评论:4347条