java高级-泛型

一、泛型的概念

1、什么是泛型,看表面的意思,泛型就是指广泛的、普通的类型
2、所谓的泛型就是在类定义时,不为类中属性和方法指定数据类型,而是在类对象创建时为其指定相应的数据类型。这个参数类型将在使用的时候就确定了。

二、为何使用泛型?

        使用集合时就用过泛型List 创建一个List对象List list=new ArrayList();
1)首先就像上面那个例子一样,使用泛型能够限定集合中,如List, Set中元素的类型,保证一个集合中只有一个类型。
2)程序也能更加健壮(只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常)

public class Point<T> {
   
    //x坐标
    private T X;
    //y坐标
    private T Y;
    //输出坐标的值
    public void show(){
   
        System.out.println("x的坐标:"+X+";y的坐标:"+Y);
    }
    public Point() {
   }
    public Point(T x, T y) {
   X = x; Y = y;}
    public T getX() {
   return X;}
    public void setX(T x) {
    X = x;}
    public T getY() {
    return Y;}
    public void setY(T y) {
   Y = y; }
}

创建一个test测试类

public class Test {
   
    public static void main(String[] args) {
   
        Point p1=new Point(12,3);//坐标为整数int--自动装箱->Integer--->Object(向上转型)
        p1.show();

        //如果没指定泛型类型,默认为Object
        Point p2=new Point(2.3,"北纬20度");
        p2.show();

        //泛型类型必须是引用类型
        // x和y的值可以都是整数类型。
        Point<Integer> p3=new Point<Integer>(4,5);
        p3.show();
			 // x和y的值可以都是小数类型。
        Point<Double> p4=new Point<Double>(2.1,4.5);
        p4.show();
		   // x和y的值可以都是字符串类型。
        Point<String> p5=new Point<String>("东经180度","北纬25度");
        p5.show();
    }
}

测试结果如下:
java高级-泛型_第1张图片

注意: 上面的泛型类型必须都是引用类型。不能是基本类型。

三、如何定义泛型

        泛型可以定义在类上,接口上,方法上。 泛型类,泛型接口以及泛型方法。
        泛型可以解决数据类型的安全性

你可能感兴趣的:(java,jvm,开发语言)