【反射】Java反射机制 -- 常用构造器与方法

简介: 【反射】Java反射机制 -- 常用构造器与方法


Java反射


什么是反射?

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

反射的作用

  • ①获取一个类里面所有的信息,获取到之后,在执行其它业务逻辑。
  • ②结合配置文件,动态创建对象并调用。




1. 获取class对象的三种方式

  • Class.forName("全类名");
  • 最常用
  • 类型.class
  • 常作为参数进行传递
  • 对象.getClass();
  • 当有了这个类的对象时才可以使用
/**
 * @author .29.
 * @create 2023-10-20 21:36
 */
public class reflectDemo {
    public static void main(String[] args) throws ClassNotFoundException {
        //Student类是一个自定义的JavaBean类
        //1. Class.forName("全类名")
        Class clazz1 = Class.forName("com.haojin.myReflect.Student");
        //2. 类名.class
        Class clazz2 = Student.class;
        //3. 对象.getClass()
        Student student = new Student();
        Class clazz3 = student.getClass();
        //获取到的class对象,都是一致的
        System.out.println(clazz1 == clazz2); //true
        System.out.println(clazz2 == clazz3); //true
    }
}




2. 反射 - 获取构造方法

Class类中用于获取构造方法的方法

  • Constructor<?>[] getConstructors():返回所有公共构造方法对象的数组。
  • Constructor<?>[] getDeclaredConstructors():返回所有构造方法对象的数组。
  • Constructor<T> getConstructor(Class<?>... parameterTypes):返回单个公共构造方法的对象。
  • Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes):返回单个构造方法的对象。


Constructor类中用于创建对象的方法

  • T newInstance(Object... initargs):根据指定的构造方法创建对象。
  • setAccessible(boolean flag):设置为true,表示取消访问检查。




3. 反射 - 获取成员变量

Class类中用于获取成员变量的方法

  • Field[] getFields():返回所有公共成员变量对象的数组。
  • Field[] getDeclaredFields():返回所有成员变量对象的数组。
  • Field getField(String name):返回放个公共成员变量对象。
  • Field getDeclaredField(String name):返回单个成员变量对象。


Field类中用于创建对象的方法

  • void set(Object obj,Object value):为成员变量赋值。
  • Object get(Object obj):获取成员变量的值。




4. 反射 - 获取成员方法

Class类中用于获取成员方法的方法

  • Method[] getMethods():返回所有公共成员方法对象的数组,包含继承的。
  • Method[] getDeclaredMethods():返回所有成员方法对象的数组,不包括继承的。
  • Method getMethod(String name,Class<?>... parameterTypes):返回单个公共成员方法对象。
  • Method getDeclaredMethod(String,Class<?>... parameterTypes):返回放个成员方法对象


Method类中用于创建对象的方法

  • Object invoke(Object obj,Object...args):运行方法。
  • 参数一:用obj对象调用该方法。
  • 参数二:调用方法时传递的参数(没有可以不写)
  • 返回值:方法的返回值(没有可以不写)




目录
相关文章
|
8天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
46 3
|
3天前
|
Java
【专栏】Java中的反射机制与应用实例
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
3天前
|
安全 Java
【JAVA】Java并发编程中的锁升级机制
【JAVA】Java并发编程中的锁升级机制
|
3天前
|
存储 Java 索引
【JAVA】HashMap的put()方法执行流程
【JAVA】HashMap的put()方法执行流程
|
3天前
|
设计模式 Java Spring
来聊聊Java的反射机制(下)
来聊聊Java的反射机制(下)
7 0
|
5天前
|
Java
Java 与垃圾回收有关的方法
Java 与垃圾回收有关的方法
|
5天前
|
Java 数据库连接
深入理解Java异常处理机制
【4月更文挑战第24天】本文将探讨Java中的异常处理机制,包括异常的概念、分类、捕获和抛出等方面。通过深入了解异常处理机制,可以帮助我们编写更加健壮的程序,提高代码的可读性和可维护性。
|
6天前
|
Java
Java 反射
Java 反射
|
6天前
|
设计模式 Java 索引
由反射引出的Java动态代理与静态代理
由反射引出的Java动态代理与静态代理
12 0
|
6天前
|
存储 Java Shell
深入剖析Java中的反射,由浅入深,层层剥离!
深入剖析Java中的反射,由浅入深,层层剥离!
10 1