对泛型的认知

本文介绍了Java泛型的基本概念,包括其格式与好处,如类型安全、消除强制类型转换及提高性能等。并通过实例展示了泛型如何提升代码质量和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.泛型的基本概念

      泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数, 这种参数类型可以用在类,接口和方法的创建中,

      分别被称为泛型类,泛型接口,泛型方法。

2.格式:

               集合<标签名(类类型)>  变量  =  new  集合<类类型> ();

3.泛型的好处

   java语言引入泛型的好处就是安全简单。

  (1)类型安全。

          通过知道使用泛型定义的变量的类型限制,编译器可以更有效地提高Java程序的类型安全。

(2)消除强制类型转换。

         消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。所有的强制转换都是自动和隐式的。

(3)提高性能。


示例:

  以地球经纬度为例  (在没有使用泛型时)

class Point{
    private Object x;  
    private Object 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;
    }
}

public class Dome {
    
    public static void main(String[] args) {
        
        Point p = new Point();
        
        /*p.setX(10);
        p.setY(10);
        
        int px = (Integer) p.getX();
        int py = (Integer) p.getY();*/   //正常运行
        
        /*p.setX(10.2f);
        p.setY(10.2f);
        
        float px = (Float) p.getX();
        float py = (Float) p.getY();*/   //正常运行
        
        p.setX(10.2f);
        p.setY(10.2f);
        
        int px = (Integer) p.getX();    //在此时编译器并不报错
        float py = (Float) p.getY();
        
        System.out.println("x="+px+"  y="+py); 

         //而当我们运行时会报以下错

        Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
        at com.baidu.test.Dome.main(Dome.java:41)
    }


     那么在这种情况下,我们的泛型就运用而生,以下是使用泛型:

class Point<T>{
    private T x;
    private T 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;
    }
}

public class Dome {

    public static void main(String[] args) {
        
        Point<String> p = new Point<String>();
        
      /*p.setX("纬度是:243");
         p.setY("经度是:43");*/   //正常运行

        p.setX(100);
        p.setY("经度是:100");  //此时编译器就会直接报错
        
        System.out.println(p.getX()+" "+p.getY());
        
    }


4.泛型使用的注意事项

(1)泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

(2)泛型的类型参数可以有多个。

(3)不能对确切的泛型类型使用instanceof操作。

(4)不能创建一个确切的泛型类型的数组


刚刚接触Java 不足之处还请多多见解 

此篇只是记录自学Java中的随笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值