泛型

什么是泛型

  • 泛型,即“参数化类型”。顾名思义,就是将类型参数化,然后在使用/调用时传入具体的类型(类型实参)。

为什么使用泛型

  • 泛型提高程序操作的可读性和安全性。
  • 例如集合类型,由于集合在存储对象的时候不会保留其数据类型信息,任何数据类型对象存入集合中时都被当作 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-泛型和反射的更多相关文章

  1. JAVA的泛型与反射的联合应用

    通过泛型与反射的结合,可以编写框架来使开发更容易,这里演示的是BaseDao部分的简单使用. BaseDao部分代码: public abstract class BaseDao<T>{ ...

  2. java的泛型与反射机制

    什么是泛型? 泛型,即“参数化类型”.顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参) ...

  3. 关于Java中泛型、反射和注解的扫盲篇

    泛型 泛型概念   泛型是在JDK1.5之后引入的,旨在让我们写出更加通用化,更加灵活的代码.通用化的手段在于让数据类型变得参数化,定义泛型时,对应的数据类型是不确定的,泛型方法被调用时,会指定具体类 ...

  4. 应用Java泛型和反射导出CSV文件

    项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能. public <T> void saveFile(Li ...

  5. JAVA 注解,泛型,反射获取泛型,并实例化

    JAVA 的泛型加大了 编程的灵活性,在配合上反射,可以让我们省去大量的重复代码,当你用 SpringBoot 整合 JPA 的时候 你会发现,你的 DAO 层只需要继承 BaseDao,在显示标明泛 ...

  6. Java高质量代码之 — 泛型与反射

    在Java5后推出了泛型,使我们在编译期间操作集合或类时更加的安全,更方便代码的阅读,而让身为编译性语言的Java提供动态性的反射技术,更是在框架开发中大行其道,从而让Java活起来,下面看一下在使用 ...

  7. Java泛型和反射

    1. 字节码对象的三种获取方式 以String为例 Class<? extends String> strCls = "".getClass(); Class<S ...

  8. Java基础系列 - 泛型和反射机制

    package com.test5; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Java泛型和反射机 ...

  9. java中的泛型与反射

    在java开发中,大多数情况是多人开发,那么如何在没有API的情况下,快速的理解到别人开发的一些类的详细信息呢? 比如函数名,类名,返回参数等等 我们可以定义一个反射机制的类,通过此类来打印此你想要操 ...

  10. Java“禁止”泛型数组

    Java“禁止”泛型数组 原文:https://blog.csdn.net/yi_Afly/article/details/52058708 1. 泛型定义泛型编程是一种通过参数化的方式将数据处理与数 ...

随机推荐

  1. Python调用Openstack API

    本文将介绍如何使用 python 调用 OpenStack API. 什么是RESTful API RESTful API 就是 RESTful 风格的 API.遵循 RESTful 风格开发的API ...

  2. Python 装饰器原理

    装饰器是 Python 编程中常用的一个功能,可以将通用的逻辑抽象成装饰器,通过装饰器语法应用到不同的目标上,达到增强或修改目标逻辑的目的. 先来看一个简单的例子 # 打印耗时的装饰器 def log ...

  3. 【Python】bytes和hex字符串之间的相互转换

    十六进制字符串:a="CC DD 01 61 F6 01 00 64 A4 81 00 00 00 8B" b=bytes.fromhex(a) 转为字节 from socket ...

  4. .net core + vue + elementui 删除指定日期段、指定路径下的所有文件

    1.呈现效果 2.后端 1)服务层 /// <summary> /// 删除指定修改日期段及指定路径下的所有文件 /// </summary> /// <param na ...

  5. STM32F4寄存器初始化系列:GPIO

    1 static void GPIO_Init(void) 2 { 3 4 //sound 5 GPIO_Set(GPIOB,PIN4,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO ...

  6. Requset02

    其他功能: 1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数 1. String getParameter(String name):根据参数名称获取参数值 ...

  7. day13-自定义拦截器

    自定义拦截器 1.什么是拦截器 说明: 拦截器与过滤器的区别 SpringMVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求 ...

  8. JZOJ 2483. 【GDKOI 2021提高组DAY1】回文(palindrome)

    题目 求区间最长回文串长度 \(1 \le n\le 5 \times 10^5\) 题解 比较妙的做法,主要是在询问部分 预处理出以某位为中心回文半径长 \(p_i\),马拉车和二分+哈希均可 然后 ...

  9. 图文指南 篇二:虚拟机ESXi6.7安装黑群晖教程

    转载:什么值得买 (ESXI虚拟机是非常好用的多开虚拟机是VM系列非常强的) https://post.smzdm.com/p/agd8l34w/#:~:text=7%E5%AE%89%E8%A3%8 ...

  10. linux配置两个不同网段的ip and linux批量添加连续IP

    转载csdn: centos 下批量添加连续IP_cdefg198的专栏-CSDN博客_centos批量添加ip 转载csdn: linux配置两个不同网段的ip_子曰小玖的博客-CSDN博客_lin ...