当前位置: 首页 > article >正文

JAVA泛型概念的理解

什么是泛型?
泛型是JAVA语言中一种增强类型安全性的机制,它允许程序员在类,接口和方法中使用类型参数,以便在编译时进行类型检查,并在运行时生成正确的代码。泛型的主要目的是提高代码的可重用性和可读性,同时减少类型转换的错误。
泛型和Object类型的区别

泛型和Object类型的主要区别在于类型安全性、代码重用性和可读性,以及在编译时和运行时的行为。

1. 类型安全性:泛型提供了编译时类型检查,可以在编译阶段捕获类型错误,提高程序的安全性。使用泛型,可以在编译时指定操作的对象类型,并在编译器强制类型检查。而使用Object,则会失去编译器对类型的检查,需要在运行时进行类型转换,并存在类型转换错误的风险。
2. 代码重用性和可读性:通过使用泛型,可以编写通用的代码,可以在不同类型之间重用,提高代码的可维护性和可读性。而如果直接使用Object,需要手动进行类型转换,代码可读性和重用性会相对较差。使用泛型可以避免在操作对象时进行强制类型转换,提高代码的简洁性和可维护性。
3. 运行时行为:Object本身是一个所有类的父类,可以强制类型转换,但可能会存在类型不匹配的问题。泛型在虚拟机中会被擦除掉具体类型信息,因为泛型是在编译时进行类型检查的,所以不会出现类型不匹配的问题。
泛型插除

泛型信息只存在于代码编译阶段,在进入JVM之前,与泛型相关的信息会被擦除掉。

例子:方法重载

public void test(List<Integer> list){
    
}

public void test(List<String> list){
    
}

上述编译不会通过,我们都知道在同一个类中方法名相同,参数列表不同(参数类型,参数个数)才称作为重载,上述两方法是方法名相同,参数个数相同,如果能编译通过,说明上述参数类型是不同的,但实际是编译不会通过,编译的时候会将泛型直接擦除,属于同一个方法。


http://www.kler.cn/a/157236.html

相关文章:

  • x86_64 Ubuntu 编译安装英伟达GPU版本的OpenCV
  • 查询 MySQL 默认的存储引擎(SELECT @@default_storage_engine;)
  • MySQL for update skip locked 与 for update nowait
  • springBoot发布https服务及调用
  • 分别查询 user 表中 avatar 和 nickname 列为空的用户数量
  • 14:30面试,14:08就出来了,面试问的有点变态呀。。。
  • 电压驻波比
  • Oracle 11g安装过程
  • 初识动态规划算法(题目加解析)
  • SSM校园组团平台系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
  • 【0241】Parser解析分析统计信息(PARSE ANALYSIS STATISTICS)
  • C语言面试之旅:掌握基础,探索深度(面试实战之ARM架构一)
  • Boost:内存映射文件
  • C++ 指针详解
  • mysql which is not in SELECT list; this is incompatible with DISTINCT解决方案
  • Module build failed: Error: ENOENT: no such file or directory
  • 现在的00后,实在是太卷了......
  • springboot遇到的问题02
  • 【前端系列】前端存档术之keep-alive
  • 微信开发者工具里面模拟操作返回、录屏、网络速度、截屏等操作
  • Java-easyExcel入门教程
  • 认知觉醒(三)
  • 水库监管AI视觉算法与边缘计算盒子
  • 什么是数据增强,为什么会让模型更健壮?
  • 电子学会C/C++编程等级考试2022年06月(四级)真题解析
  • 解释LED显示屏的裸眼3D特效原理