package cn.ngp.demo; //(generic)泛型避免了: 向下转型可能造成的安全隐患 //此时设置的T在Point类定义上只表示一个标记,在使用的时候需要为其设置具体的类型 class Point<T>{ //定义坐标, Type = T,是一个类型 private T x ; //此属性的类型不知道,由Point类使用时动态决定 private T y ; public void setX(T x) { this.x = x; } public T getX() { return x; } public void setY(T y) { this.y = y; } public T getY() { return y; } } public class TestDemo { public static void main(String[] args) { //第一步: 设置数据 // Point p = new Point<>();//JDK1.7之后,后一个方括号内的Integer可以省略,不过建议代码写得完善一些 Point p = new Point();// 如果没有增加,将使用Object类型描述泛型 p.setX(100); p.setY(20); // p.setX("东经100度"); // 如果设置的数据类型是错误的,那么在编译的时候就会自动的排查 // p.setY("北纬20度"); //第二步: 取出数据,由于接受的类型就是String,所以不需要向下强制编译 //利用了包装类的自动装箱功能 int x = (Integer)p.getX(); int y = (Integer)p.getY(); // String x = (String) p.getX(); // String y = (String) p.getY(); System.out.println("x坐标: " + x + " ,y坐标: " + y); } }