开发者学堂课程【【名师课堂】Java 高级开发:泛型(泛型问题引出)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/372/detail/4536
泛型(泛型问题引出)
内容介绍:
一、 什么是泛型
二、 泛型的问题引出
一、什么是泛型
在 JDK1.5 中泛型是一件重要的实现技术,它可以帮助我们解决程序的参数转换问题。
二、 泛型的问题引出
范例如下:
假设需要定义一个描述坐标的程序类 Point 类,而这个坐标类中需要提供有两个坐标属性:
X、y,对于这连个属性的内容可能有以下几种选择:
X=10、y=20;
X=10.1、y=20.2;
X= 东京 70 度、y=北纬 20 度。
现在首先要解决的问题是 Point 类中的 x 或 y 的属性类型问题,那么此时需要保存的有 int、double、string,所以在 java 里面只有一种类型可以保存所有的类型:
Object
Int 自动装箱为 Integer,Integer 自动向上转型为 Object
double 自动装箱为 double,doubler 自动向上转型为 Object
string 向上自动转型为 Object。
范例:定义 Point 类
package cn.mldn.demo;
class Point i
I private object x;
private object y ;
public object getx() {
return ×;
}
public void setx(object x) {i
this.x = X;
}
public object getY() {
return y;
}
public void setY(object y) {
this.y =y;
}
}
范例:设置整型坐标
public class TestDemo i
public static void main(string[] args){
//第一步:设置数据
Point p=new Point();p.setx( 10);
p.setY(20);
//第二步:取出数据
int x = (Integer) p.getx() ;int y =(Integer) p.getY() ;
system.out.println("x=" +X+"、y="+
}
范例:设置字符串
public class TestDemo i
public static void main(string[] args){
//第一步:设置数据
Point p =new Point();p.setX("东经20度");
p.setY("北纬10度");//第二步:取出数据
String x = (String)p.getX;String y = (String)p.getY) ;
system.out. print1n( "x ="+× + "、y=" +
}
}
现在解决问题的关键是 Object,于是问题也即将出现在 Object 上。
范例:观察程序的问题
public class TestDemo i
public static void main(String[] args){
//第一步:设置数据
Point p= new Point();p.set×(10.2);
//设置坐标 p.setY( "北纬10度");
//第二步:取出数据
string x=(String)p.getx() ;string y =(string) p.getY() ;
system.out.print1n( "x ="+×+"、y= "
}
这个时候由于设置方的错误,将坐标的内容设置为了 double 和 string,但是接收方不知道,它认为还是 string,所以当我们的程序一旦执行之后就将出现如下的错误提示
ClassCastException 指的是两个没有关系的对象强制转换所带来的异常,那么这个时候语法并不会对其进行任何的限制,但是执行的时候出现了程序错误,所以得出了一个结论:向下转型是不安全的操作,会带来隐患。
注意:Object 操作只是为了取出数据,一些深层次操作和 Object 是没有关系的。