java-javaSE-泛型和反射
泛型
什么是泛型
- 泛型,即“参数化类型”。顾名思义,就是将类型参数化,然后在使用/调用时传入具体的类型(类型实参)。
为什么使用泛型
- 泛型提高程序操作的可读性和安全性。
- 例如集合类型,由于集合在存储对象的时候不会保留其数据类型信息,任何数据类型对象存入集合中时都被当作 Object 类型的数据,当我们从集合中获取元素时,就需要进行强制类型转换。
泛型通配符
List<T>无限定通配符List<? super T>T 是类型通配符的下限,List中存储的类型必须是T的父类List<? extends T>T 是类型通配符的上限,List中存储的类型必须是T的子类
泛型代码和虚拟机
- java 代码在编译时会对泛型进行擦除,并使用其限定类型(无限定的变量用Object)替换。
- 执行流程为:编译器先检查代码中泛型的类型,然后再进行类型擦除,再进行编译。
- 由于编译时擦除了泛型,因此虚拟机中没有泛型。
- 为了保证类型的安全性,会在获取泛型类对象时,插入强制类型转换。
反射
什么是反射
- JAVA反射机制是:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的功能称为反射机制。
反射的使用方式
获取类的字节码Class对象
- 对象.getClass() 由于需要先获取对象,因此会实例化类对象
- 类.class()
- Class.forName(类的全限定名)
通过Class类对象实现实例化
- Class对象.newInstance()
- newInstance()方法内部实际上调用了无参数构造方法。
通过Class类对象可获取的参数


参考博客:
[https://blog.csdn.net/qq_40408443/article/details/123206594]
https://blog.csdn.net/qq_44715943/article/details/120587716
java-javaSE-泛型和反射的更多相关文章
- JAVA的泛型与反射的联合应用
通过泛型与反射的结合,可以编写框架来使开发更容易,这里演示的是BaseDao部分的简单使用. BaseDao部分代码: public abstract class BaseDao<T>{ ...
- java的泛型与反射机制
什么是泛型? 泛型,即“参数化类型”.顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参) ...
- 关于Java中泛型、反射和注解的扫盲篇
泛型 泛型概念 泛型是在JDK1.5之后引入的,旨在让我们写出更加通用化,更加灵活的代码.通用化的手段在于让数据类型变得参数化,定义泛型时,对应的数据类型是不确定的,泛型方法被调用时,会指定具体类 ...
- 应用Java泛型和反射导出CSV文件
项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能. public <T> void saveFile(Li ...
- JAVA 注解,泛型,反射获取泛型,并实例化
JAVA 的泛型加大了 编程的灵活性,在配合上反射,可以让我们省去大量的重复代码,当你用 SpringBoot 整合 JPA 的时候 你会发现,你的 DAO 层只需要继承 BaseDao,在显示标明泛 ...
- Java高质量代码之 — 泛型与反射
在Java5后推出了泛型,使我们在编译期间操作集合或类时更加的安全,更方便代码的阅读,而让身为编译性语言的Java提供动态性的反射技术,更是在框架开发中大行其道,从而让Java活起来,下面看一下在使用 ...
- Java泛型和反射
1. 字节码对象的三种获取方式 以String为例 Class<? extends String> strCls = "".getClass(); Class<S ...
- Java基础系列 - 泛型和反射机制
package com.test5; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Java泛型和反射机 ...
- java中的泛型与反射
在java开发中,大多数情况是多人开发,那么如何在没有API的情况下,快速的理解到别人开发的一些类的详细信息呢? 比如函数名,类名,返回参数等等 我们可以定义一个反射机制的类,通过此类来打印此你想要操 ...
- Java“禁止”泛型数组
Java“禁止”泛型数组 原文:https://blog.csdn.net/yi_Afly/article/details/52058708 1. 泛型定义泛型编程是一种通过参数化的方式将数据处理与数 ...
随机推荐
- App测试Android的闪退总结
Android的闪退有三种情况: 第一种:没有任何弹框提示,直接退出 第二种:有弹框提示程序异常 第三种:ANR无响应 三种情况的日志提交和检索方法: 第一种情况:是底层C挂了 **首先:提交客户端 ...
- JSONPath 处理特殊字符
JSONPath 处理特殊字符 先来看看jsonpath的基础 语法 $ 表示文档的根元素 @ 表示文档的当前元素 .node_name 或 ['node_name'] 匹配下级节点 [index] ...
- STM32F0库函数初始化系列:PWM输出
void TIM1_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_Time1BaseStructure; TIM_OCInitTypeDef TI ...
- Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. SharedPreferences 是 Android 平台上轻量级的 K-V ...
- C语言小程序-天天酷跑类游戏 26号完成
1.创建游戏内背景 2.实现人物 奔跑 跳跃 优化帧 3.障碍物 出现 https://kxd.lanzoul.com/iKXU20elmtah 开源地址 半成品
- 【Oculus Interaction SDK】(十二)Meta Quest 如何开启透视(Passthrough)
前言 前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了.本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发.当然,不排除我文章刚写完 SDK 又变 ...
- TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式
TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 -- 网络地址的分配方式 关于 DHCP(DHCP, Dynamic Host Co ...
- 免杀之:Mimikatz 免杀过杀软,思路学习
免杀之:Mimikatz 免杀过杀软 目录 免杀之:Mimikatz 免杀过杀软 1 环境准备 2 处理过程 2.1 生成原始的Mimikatz程序 2.2 定位到代码或字符串上特征绕过 2.3 定位 ...
- [BSR文摘] 如何解释CRP正常而多普勒超声显示关节炎活动的RA亚型
如何解释CRP正常而多普勒超声显示关节炎活动的RA亚型 Braford CM, et al.Rheumatology 2016. Present ID: 72. 背景:临床门诊越来越多地利用肌肉骨骼超 ...
- CCRD总目录(2007年至今,动态更新中)
中信国健临床通讯总目录 (动态更新.末次更新: 2015-07-06) 年份 目录网址 2010年 1.2010年第01期 (或者浏览有备注的目录: 2010年第01期 ) 2. 2010年第02期 ...