案例,定义一个坐标类,这个类可以表示三种类型的坐标
1 整数坐标 x=10 y=20
2 小数坐标 x=10.1 y=20.1
3 字符串坐标 y=坐标y10 x=坐标x20
要求定义这么一个类,可以存放以上三种类型
构思、Object是所有类的父类 是否可以用Object类定义呢
整数 基本数据类型 int ----> 自动装箱 包装类 自动向上转型 --> Object 小数 基本数据类型 double --自动装箱 包装类 自动向上转型--->Object 字符串 本身就是一个类 自动向上转型 Object
public class Point { private Object x; //坐标x private Object y; //坐标y public Object getX() { return x; } public void setX(Object x) { this.x = x; } public Object getY() { return y; } public void setY(Object y) { this.y = y; } }
通过以上的定义,x y 的属性可以接收任意数据类型
//设置一个整数 Point p=new Point(); p.setX(10); //设置坐标x p.setY(20);//设置坐标y int x=(Integer)p.getX(); //取得的时候需要向下转型 (强制类型转换) int y=(Integer)p.getY();
那么 会产生什么问题呢?
如果你想传一个double类型 编译并不会出错,但是运行会出错
p.setX(10.111); //设置坐标x p.setY(20.111);//设置坐标y
那么 我们就可以运用泛型的思想解决这个问题
定义一个泛型类 强制让你写入某种类型的数据
格式
public class Point<T> {// T只是一个标记 type(T)可以随便定义}
public class Point<T> { // T 只是一个标记 type 可以随便定义的 // T 有可能是 String double int 一切皆有可能 private T x; //坐标x private T y; //坐标y public T getX() { return x; } public void setX(T x) { this.x = x; } public T getY() { return y; } public void setY(T y) { this.y = y; } }
//设置一个整数 Point<Integer> p=new Point(); // 只能存在int类型 p.setX(10); //设置坐标x p.setY(20);//设置坐标y int x=p.getX(); //取得的时候需要向下转型 (强制类型转换) int y=p.getY(); System.out.println("坐标x"+x+" "+"坐标y"+y);
如果想改成String类型的
Point<String> p = new Point(); p.setX("x10"); p.setY("y20"); String x = p.getX(); String y = p.getY(); System.out.println("坐标 x"+x+" 坐标 y"+y);
=========================================
point<>
注意
尖括号里面的是一个类 String Double Integer等等
整数 基本数据类型 int ----> 自动装箱 包装类 自动向上转型 --> Object
小数 基本数据类型 double --自动装箱 包装类 自动向上转型--->Object
字符串 本身就是一个类 自动向上转型 Object
浙公网安备 33010602011771号