首页 > 编程语言 >27. java反射的作用于原理

27. java反射的作用于原理

时间:2024-12-24 10:35:48浏览次数:3  
标签:反射 27 Java 对象 java 动态 Class

1、定义:
反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。

这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

2、哪里会用到反射机制?
jdbc就是典型的反射
Class.forName('com.mysql.jdbc.Driver.class');//加载MySQL的驱动类
这就是反射。如hibernate,struts等框架使用反射实现的。

3、反射的实现方式:
第一步:获取Class对象,有4中方法:
1)Class.forName(“类的路径”);
2)类名.class
3)对象名.getClass()
4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象

4、实现Java反射的类:
1)Class:表示正在运行的Java应用程序中的类和接口 注意: 所有获取对象的信息都需要Class类来实现。
2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限。
3)Constructor:提供关于类的单个构造方法的信息以及它的访问权限
4)Method:提供类或接口中某个方法的信息

5、反射机制的优缺点:
优点:
1)能够运行时动态获取类的实例,提高灵活性;
2)与动态编译结合

缺点:
1)使用反射性能较低,需要解析字节码,将内存中的对象进行解析。
解决方案:
a)通过setAccessible(true)关闭JDK的安全检查来提升反射速度;
b)多次创建一个类的实例时,有缓存会快很多
c)ReflectASM工具类,通过字节码生成的方式加快反射速度

2)相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性)

标签:反射,27,Java,对象,java,动态,Class
From: https://www.cnblogs.com/tim-zuo/p/18626789

相关文章

  • 26. Java IO与 NIO的区别
    Java中的IO(Input/Output)和NIO(NewInput/Output)是两种不同的处理输入输出流的方式,它们在设计、使用场景和性能上有显著的差异。以下是JavaIO与NIO的主要区别:1.基本概念IO(传统IO):指的是Java中传统的输入输出流,通过java.io包提供的流类(如FileInputStream,FileOutputStream,Buff......
  • 25. 说说Java中的IO流
    Java中IO流分为几种?按照流向分:可以分为输入流和输出流按照操作单元分:可以分为字节流和字符流按照流的角色分:可以分为节点流和处理流JavaIo流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系,JavaI0流的40多个类都是从如下4......
  • Java 项目实战:基于 Spring Boot、MyBatis、PageHelper、Spring Security、FastJSON、S
    一、系统概述1.1系统目标本系统的主要目标是提供一个集成化的商品管理平台,实现以下功能:高效的商品信息管理,包括商品的基本信息、类型、供应商、客户等的录入、查询、修改和删除。精确的采购流程管理,涵盖采购订单的创建、修改、查询、入库操作以及与供应商的信息关联。完善......
  • 老榕树的Java专题:分享一个问题!!!
    在实现类里定义了个全局静态变量:privatestaticSimpleDateFormat=newSimpleDateFormat("yyyy-MM-dd");然后在方法中使用sdf.parse(inputDto.getREQUESTDATE()).这样导致日期转换成莫名其妙的数据。首先,SimpleDateFormat 的线程不安全问题:SimpleDateFormat 不是线程安......
  • 老榕树的Java专题:你了解java吗?
    Java:编程世界的多面手        在当今数字化浪潮汹涌澎湃的时代,编程技术无疑成为了驱动创新与变革的核心引擎。而在众多编程语言中,Java犹如一颗璀璨的明星,闪耀着独特而迷人的光芒,以其卓越的特性和广泛的应用场景,在全球范围内赢得了无数开发者的青睐与追捧。一、Java......
  • Easysearch Java SDK 2.0.x 使用指南(二)
    在上一篇文章中,我们介绍了EasysearchJavaSDK2.0.x的基本使用和批量操作。本文将深入探讨索引管理相关的功能,包括索引的创建、删除、开关、刷新、滚动等操作,以及新版SDK提供的同步和异步两种调用方式。SDK的对象构建有两种方式1.传统的Builder方式最基础的方式,像这......
  • Java 大视界 -- Java 构建大数据开发环境:从 JDK 配置到大数据框架集成(一)
           ......
  • 包机制、文档注释javaDoc、用户交互Scanner20241223
    包机制20241223点击src打开设置点击外观取消勾选压缩空的中间软件包、平展软件包创建包点击src点击新建,点击软件包输入新建包名com.pangHuHuStudyJava用别的包里的方法,要先导入包,如果没有导入,可以按住出错的地方按alt+enter.importjava.util.Date;在operator.......
  • Java代码覆盖率super-jacoco
    开源项目地址https://gitee.com/didiopensource/super-jacoco项目流程项目架构部署步骤注意:一定要用Linux服务器部署,不要用Windows准备Linux服务器环境安装好JDK1.8安装好git安装和配置好Maven3.6,或3.6以下安装MySQL数据库(尽量不用8版本,就用5.7、5.8版本)拉取super-......
  • Java-10
    底部含网盘分享资料面向过程(ProceduralProgramming)确实侧重于通过一系列函数或过程来组织代码,并强调设计算法和步骤来解决问题。面向对象(Object-OrientedProgramming,OOP)的核心思想是将数据(属性)和行为(方法)封装在一起,形成对象。类的构建是面向对象编程中的一个重要概念,但......