ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Java基础系列:(1)关于泛型的简单总结(1/5)

来源:网络整理     时间:2016-01-31     关键词:

本篇文章主要介绍了"Java基础系列:(1)关于泛型的简单总结",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 一 为什么要引入泛型这个概念? 这里我用一个实例来简单说明。比如说:我们要设计一个表示二维坐标的类,但是因为关于坐标的表示有多种形式,比如: ...

一 为什么要引入泛型这个概念?

       这里我用一个实例来简单说明。比如说:我们要设计一个表示二维坐标的类,但是因为关于坐标的表示有多种形式,比如:

       (1)整数表示:x=10    y=20

       (2)浮点型表示:x=10.5    y=20.8

       (3)字符串表示:x=””东经 50度””    y=”北纬 79度”

       因此,在我们设计的类中就不能单一的设置成int,float或String,而想要使用一个类型来接收这三种不同的数据类型,就只能使用Object。测试代码如下:

package javase.paradigm;

/**
 * 二维坐标表示
 * */
public class Point {
	private Object X;
	private Object Y;

	public Object getX() {
		return X;
	}

	public void setX(Object x) {
		X = x;
	}

	public Object getY() {
		return Y;
	}

	public void setY(Object y) {
		Y = y;
	}

	public static void main(String[] args) {
		Point point = new Point();
		//1 整数表示坐标
		point.setX(10);  //int --> Integer --> Object
		point.setY(20);

		int x = (int) point.getX();
		int y = (int) point.getY();
		System.out.println("整数表示,X坐标是:" + x + ",Y坐标是:" + y);

		System.out.println("******************我是华丽的分割线**********************");

		//2 小数表示坐标
		point.setX(10.5f);  //float --> Float --> Object
		point.setY(20.8f);

		float x2 = (float) point.getX();
		float y2 = (float) point.getY();
		System.out.println("小数表示,X坐标是:" + x2 + ",Y坐标是:" + y2);

		System.out.println("******************我是华丽的分割线**********************");

		//3 字符串表示坐标
		point.setX("东经 50度");  //String --> Object
		point.setY("北纬 79度");

		String x3 = (String) point.getX();
		String y3 = (String) point.getY();
		System.out.println("字符串表示,X坐标是:" + x3 + ",Y坐标是:" + y3);

	}

}

输出:

整数表示,X坐标是:10,Y坐标是:20
******************我是华丽的分割线**********************
小数表示,X坐标是:10.5,Y坐标是:20.8
******************我是华丽的分割线**********************
字符串表示,X坐标是:东经 50度,Y坐标是:北纬 79度

       通过上面设计的这个类貌似已经解决我们的需求了?但是真的是这样吗?这个类中将变量设置成Object类型,就意味着可以使用任意的Object子类来初始化,如果对变量初始化的类型和取出类型不一致,则程序在运行时会报错,出现类型转化异常。比如说这样:

                point.setX(0);
		point.setY("北纬179度");

		int x4 = (int) point.getX();
		int y4 = (int) point.getY();  //错误代码
		System.out.println("错误案例,X坐标是:" + x4 + ",Y坐标是:" + y4);

这段代码编译没有问题,但是运行时报错,报错信息如下:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
	at javase.paradigm.Point.main(Point.java:60)

错误信息已经很明显了,String类型不能转化成Integer类型。因此为了避免出现这种类型安全问题,我们就需要使用泛型

二 泛型的初步使用

(1)格式:

       类名称<具体类> 对象名称 = new 类名称<具体类>()

如:Point2 point2_1 = new Point2();

(2)完整测试案例代码如下:

相关图片

相关文章