案例,定义一个坐标类,这个类可以表示三种类型的坐标

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