demo1
class Point<T> {// T属于类型标记,可以设置多个标记
private T x;
private T y;
public void setX(T x){
this.x = x;
}
public void setY(T y){
this.y = y;
}
public T getX(){
return this.x;
}
public T getY(){
return this.y;
}
}
public class HelloWorld {
public static void main(String args[]){
// 实例化Point类,设置泛型标记"T"的目标数据类型,属性,方法参数,返回值的类型动态配置
Point<Integer> point = new Point<Integer>();
// 第一步:根据需求进行内容的设置,所有数据通过Object接收
point.setX(10);
point.setY(20);// 自动装箱
//point.setY("北纬20度");// 自动装箱--编译报错了
// 第二步:从里面获取数据--不用向下转型
int x = point.getX();
int y = point.getY();// 获取y坐标的原始内容
System.out.println("x坐标:" + x + ",y坐标:" + y);
}
}
-
泛型的本质在于:类中的属性或方法的参数与返回值的类型,可以有对象实例化的时候决定.
-
那么此时就需要在类定义的时候,明确的定义占位符(泛型标记)
-
泛型之中只允许设置引用类型,如果现在要操作基本类型必须使用包装类;
-
从jdk1.7开始,泛型对象实例化可以简化为:Point
point = new Point<>();(后面Integer可以省略) -
使用泛型可以解决大部分的类对象的强制转换处理,这样的程序才是一个合理的设计;