java中的反射机制

简介: java中的反射机制

1.什么是反射?


反射允许对封装类的字段,方法和构造函数的信息进行编程访问。

也就是说反射允许对成员变量,成员方法和构造方法的信息进行编程访问。


那么在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性;对于任何一个对象,我们都能够对它的属性和方法进行调用。我们把这种动态获取类信息、调用对象方法的功能称之为反射机制


2.反射的作用


  • 获取任意一个类中的所有信息
  • 动态创建对象,调用对象中的所有方法(通过反射甚至可以调用private方法)
  • 生成动态代理
  • 几乎所有的框架都用到了

3.基本反射的功能实现


3.1获取class字节码文件对象


class.forName("全类名") (最为常用)

类名.class (一般作为参数进行传递)

对象.getClass() (有了类对象才能使用)


3.2获取构造方法、成员方法、成员变量


getDeclaredConstructors() 获得所有的构造方法


getDeclaredConstructor(参数类型.class,……) 获得特定的构造方法


get: 获取 set: 设置

Constructor:构造方法 Parameter:参数

Field:成员变量 Modifiers:修饰符

Method:方法 Declared私有的


3.3创建实例


使用Class对象的newInstance()方法来创建Class对象对应类的实例。


先通过Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建实例。


如果是私有化权限修饰符,可以使用steAccessible(true)强制调用私有方法


3.4方法运行


Object invoke(Object obj,Object orgs)

参数一:表示方法的调用者 参数二:表示方法传递的参数(如果没有就不写)


4. java中为什么要使用反射机制


Java中为什么要用反射机制?直接创建对象不就可以了吗,其实这主要涉及到了动态与静态的问题


new创建对象:是静态编译,编译时刻加载,绑定对象。有一个类有问题(如不存在),都不能通过编译,会报错。


反射创建对象:是动态编译,运行时刻加载,绑定对象。可以用到一个类时,才进行加载。


动态编译最大限度发挥了java的灵活性,体现了多态的应用,有效降低类之间的耦合性。


注意:反射还有一个不得不说的问题,就是性能问题,大量使用反射会导致系统性能大打折扣

相关文章
|
6天前
|
Java 数据库连接 开发者
Java的Shutdown Hook机制:优雅地关闭应用程序
Java的Shutdown Hook机制:优雅地关闭应用程序
22 1
|
6天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
5天前
|
缓存 安全 Java
7张图带你轻松理解Java 线程安全,java缓存机制面试
7张图带你轻松理解Java 线程安全,java缓存机制面试
|
6天前
|
Java C++
Java反射的简单使用
Java反射的简单使用
22 3
|
4天前
|
安全 Java API
JAVA-不安全的反射--RCE
JAVA不安全的反射造成的RCE小案例
|
4天前
|
NoSQL 算法 Java
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
|
6天前
|
消息中间件 安全 前端开发
字节面试:说说Java中的锁机制?
Java 中的锁(Locking)机制主要是为了解决多线程环境下,对共享资源并发访问时的同步和互斥控制,以确保共享资源的安全访问。 锁的作用主要体现在以下几个方面: 1. **互斥访问**:确保在任何时刻,只有一个线程能够访问特定的资源或执行特定的代码段。这防止了多个线程同时修改同一资源导致的数据不一致问题。 2. **内存可见性**:通过锁的获取和释放,可以确保在锁保护的代码块中对共享变量的修改对其他线程可见。这是因为 Java 内存模型(JMM)规定,对锁的释放会把修改过的共享变量从线程的工作内存刷新到主内存中,而获取锁时会从主内存中读取最新的共享变量值。 3. **保证原子性**:锁
20 1
|
6天前
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
24 4
|
6天前
|
Java 数据安全/隐私保护
java中异常处理机制
java中异常处理机制
15 1
|
6天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
27 0