8、反射及泛型

简介: 反射是Java提供的API,可在运行时动态加载类、获取类信息、创建对象及调用方法,广泛用于Spring、JUnit等框架,但效率较低。泛型实现类型参数化,提升编译时检查与代码通用性,如List<T>可灵活指定元素类型,避免重复类定义。

8.1 反射
什么是反射
·反射是java 提供的一套 API,通过这套 API 能够在运行期间
根据类名加载类
获取类的各种信息,如类有哪些属性、哪些方法、实现了哪些接口…
类型参数化,根据类型创建对象
方法、属性参数化,以统一的方式来使用方法和属性
反射广泛应用于各种框架实现,例如
Spring 中的 bean 对象创建、依赖注入
JUnit 单元测试方法的执行
MyBatis 映射查询结果到java 对象
反射在带来巨大灵活性的同时也不是没有缺点,那就是反射调用效率会受一定影响
8.2 泛型
什么是 Java 泛型
,泛型的主要目的是实现类型参数化,java 在定义类、定义接口、定义方法时都支持泛型泛型的好处有
提供编译时类型检查,避免运行时类型转换错误,提高代码健壮性设计更通用的类型,提高代码通用性
【例如】想设计 List 集合,里面只放一种类型的元素,如果不用泛型,怎么办呢?你必须写很多实现类·Impl1 实现类中,只放 String
·Impl2 实现类中,只放 Integer
要支持新的元素类型,实现类型也得不断增加,解决方法需要把元素类型作为参数,允许它可变化:List,其中T就是泛型参数,它将来即可以是 String,也可以是 Integer …
PS.
【例如】是为了帮助你理解,不是必须答出来
关键是答出类型参数化,懂的面试官不必多说,不懂的也没必要跟他继续啰嗦

相关文章
|
1天前
|
缓存 负载均衡 安全
第十章 常用组件1、nginx相关
正向代理是客户端通过代理访问外部服务器,隐藏客户端身份,用于访问受限资源或保护隐私;反向代理则是服务器前的代理,接收客户端请求并转发至内部服务器,隐藏真实服务器,实现负载均衡、安全防护与缓存加速,提升系统性能与安全性。
|
1天前
|
安全 Java 数据库连接
第五章 spring框架
Spring的IOC(控制反转)将对象创建交给容器管理,避免手动new;DI(依赖注入)则让容器自动注入所需对象。通过@Controller、@Service等注解声明Bean,使用@Autowired或@Resource实现注入。默认单例Bean无并发控制,若无状态则线程安全,否则需自行保证。
|
1天前
|
SQL 监控 关系型数据库
4、SQL性能分析及优化
通过SkyWalking链路追踪可定位慢接口及慢SQL,或开启MySQL慢查询日志(如设置超1秒记录)来识别执行慢的SQL。结合explain分析执行计划,关注key、type、extra等关键指标,判断索引命中与性能瓶颈,避免全表扫描,优化SQL性能。(238字)
|
1天前
|
安全 Java C++
5、线程与并发
synchronized基于Monitor实现,通过CAS设置owner实现加锁,支持锁升级(偏向→轻量级→重量级)。Java 6起优化性能,15后废弃偏向锁。相比volatile仅保证可见有序,synchronized还保证原子性;相较Lock,其为关键字,自动释放锁,但功能较简单。
|
1天前
|
NoSQL Java 数据库连接
第七章 SpringBoot框架
SpringBoot是简化Spring开发的框架,核心功能包括:starter起步依赖简化配置、自动配置实现Bean自动化管理、内嵌Web服务器支持jar包直接运行。常用starter如web、aop、redis等,分为官方与第三方两类,极大提升了开发效率。(238字)
|
1天前
|
Java Spring 容器
Spring Boot配置的优先级?
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、.yml、.yaml)和外部配置(如系统属性、命令行参数)。优先级由高到低为:命令行参数 &gt; 系统属性 &gt; .properties &gt; .yml &gt; .yaml。自动配置核心是@SpringBootApplication中的@EnableAutoConfiguration,通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类,并结合@Conditional条件注解按需注入Bean。
|
1天前
|
Java Spring 容器
Spring Bean的作用域如何设置,常见的取值有哪些?
Spring Bean作用域可通过@Scope注解设置,常见有singleton(默认,单例)、prototype(每次创建新实例)、request(每请求一个实例)、session(每会话一个实例)。singleton在容器启动时初始化,可加@Lazy延迟;prototype则每次使用时创建。多数场景使用默认单例模式。
|
1天前
|
JSON 前端开发 Java
SpringMVC的拦截器用过没有?
拦截器常用于登录校验、参数处理、数据脱敏等,通过实现`HandlerInterceptor`接口,并在配置类中注册,限定拦截路径。与过滤器相比,拦截器基于Spring容器,仅拦截Controller请求,而过滤器作用于所有Web资源。异常处理可使用`@RestControllerAdvice`和`@ExceptionHandler`实现全局捕获。常用注解包括`@RequestMapping`、`@RequestBody`、`@RequestParam`、`@PathVariable`、`@ResponseBody`等,简化开发。
|
1天前
|
Java 数据库 数据安全/隐私保护
什么是AOP?
AOP(面向切面编程)是Spring框架的重要特性,用于将日志、事务、权限等公共逻辑抽离,实现模块复用、降低耦合。项目中常用AOP记录操作日志和权限控制,通过自定义@Log注解结合环绕通知,捕获方法执行信息并存入数据库,便于追踪核心业务操作。其底层基于动态代理实现。
|
1天前
|
缓存 Java Spring
聊-聊Spring中bean的循环依赖问题?
Spring通过三级缓存解决循环依赖:一级缓存存放完整单例Bean,二级缓存存放早期半成品Bean,三级缓存存放对象工厂用于创建代理等对象。A依赖B、B依赖A时,先创建A并放入三级缓存,实例化B时通过三级缓存获取A的工厂生成早期引用并放入二级缓存,B完成初始化后注入A,再将B注入A,最终双方都成功创建并放入一级缓存,流程结束清除二级缓存临时对象。