反射及泛型

简介: 反射是 Java 提供的一套 API,可在运行期间根据类名加载类、获取类的信息、创建对象及统一调用方法和属性。它广泛应用于 Spring、JUnit、MyBatis 等框架,但反射调用效率较低。泛型则用于实现类型参数化,提升代码通用性和健壮性。

反射

什么是反射

  • 反射是 java 提供的一套 API,通过这套 API 能够在运行期间
  • 根据类名加载类
  • 获取类的各种信息,如类有哪些属性、哪些方法、实现了哪些接口 ...
  • 类型参数化,根据类型创建对象
  • 方法、属性参数化,以统一的方式来使用方法和属性
  • 反射广泛应用于各种框架实现,例如
  • Spring 中的 bean 对象创建、依赖注入
  • JUnit 单元测试方法的执行
  • MyBatis 映射查询结果到 java 对象
  • ...
  • 反射在带来巨大灵活性的同时也不是没有缺点,那就是反射调用效率会受一定影响

泛型

什么是 Java 泛型

  • 泛型的主要目的是实现类型参数化,java 在定义类、定义接口、定义方法时都支持泛型
  • 泛型的好处有
  • 提供编译时类型检查,避免运行时类型转换错误,提高代码健壮性
  • 设计更通用的类型,提高代码通用性

【例如】想设计 List 集合,里面只放一种类型的元素,如果不用泛型,怎么办呢?你必须写很多实现类

  • Impl1 实现类中,只放 String
  • Impl2 实现类中,只放 Integer
  • ...
  • 要支持新的元素类型,实现类型也得不断增加,解决方法需要把元素类型作为参数,允许它可变化:List<T>,其中 T 就是泛型参数,它将来即可以是 String,也可以是 Integer ...
相关文章
|
9月前
|
缓存 人工智能 芯片
拆开“超节点”的伪装:没有内存统一编址,仍是服务器堆叠
当万亿参数大模型成为常态,AI“军备竞赛”已升级为系统级对决。“超节点”应运而生,但真伪之别在于是否实现“内存统一编址”——唯有打破通信墙、构建全局地址空间,才能让集群如单机般高效协同。缺此核心,皆为伪超节点。
707 1
|
Java
Springboot集成SpringCloud启动后Eureka报错
Springboot集成SpringCloud启动后Eureka报错
796 0
Springboot集成SpringCloud启动后Eureka报错
|
前端开发 API 数据安全/隐私保护
从Curl到文档发布:Apipost让接口调试与文档协同更优雅
Apipost是一款提升开发者效率的工具,它将接口调试与文档生成无缝结合。通过三步工作流(从cURL导入请求、动态调试保存响应示例、自动化生成文档),解决传统流程中多平台切换导致的信息不一致问题。其核心优势在于数据同源和即时同步,减少文档维护时间,降低前后端沟通成本。某项目使用后,文档维护耗时从每周1.5小时降至10分钟。尊重开发者习惯,无需改变现有工作流,是优化API协作的理想选择。
1118 24
|
人工智能 安全 Java
深入理解Java浅拷贝与深拷贝
本文深入探讨Java中浅拷贝与深拷贝的概念、实现方式及应用场景。浅拷贝通过`clone()`方法复制对象引用,修改新对象会影响原对象;深拷贝则创建完全独立的新对象,确保数据安全。文章通过代码示例讲解两种拷贝方式的实现,并分析其优缺点。同时,针对List类型提供浅拷贝和深拷贝的具体实现方法,帮助读者更好地理解和应用这两种技术。选择拷贝方式时需权衡对象复杂度、大小及操作安全性等因素。
941 2
|
缓存 安全 Java
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
628 1
java 为什么 String 在 java 中是不可变的?
|
缓存 安全 Java
Java volatile关键字:你真的懂了吗?
`volatile` 是 Java 中的轻量级同步机制,主要用于保证多线程环境下共享变量的可见性和防止指令重排。它确保一个线程对 `volatile` 变量的修改能立即被其他线程看到,但不能保证原子性。典型应用场景包括状态标记、双重检查锁定和安全发布对象等。`volatile` 适用于布尔型、字节型等简单类型及引用类型,不适用于 `long` 和 `double` 类型。与 `synchronized` 不同,`volatile` 不提供互斥性,因此在需要互斥的场景下不能替代 `synchronized`。
3972 3
|
Java 数据库连接 数据库
Spring基础3——AOP,事务管理
AOP简介、入门案例、工作流程、切入点表达式、环绕通知、通知获取参数或返回值或异常、事务管理
Spring基础3——AOP,事务管理
什么叫做 “面向对象” 编程?
本文介绍了面向对象编程(OOP)的概念、核心组件(类和对象)、三大特性(封装、继承和多态)以及六大设计原则,强调了面向对象编程在提高代码的可重用性、模块化、扩展性和维护性方面的优点。
1445 1
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
25058 7