首页 > 编程语言 >java中的反射

java中的反射

时间:2024-05-16 15:09:04浏览次数:21  
标签:反射 java 构造方法 System 获取 公共 println out

java中的反射

能够分析信息的能力叫反射

目录

1.获取类的方法

  1. Class.forName(路径)
    
  2. 类.class
    
  3. 对象.getClass()
    

2.类对象常用功能

一、构造方法

  1. 获取指定的公共构造器

    1. 获取构造方法 getConstructor()可以根据构造方法参数类型的不同,传入对应的类对象,即可获得指定的构造方法
    2. 创建对象 newInstance()
    3. 如果使用无参构造方法,此操作可以简化:类对象.newInstance() 来创建
  2. 获取指定的所有构造器(公共+非公共)

    • getDeclaredConstructor()
  3. 获取所有的公共构造方法

    • getConstructors

      // 反射获取Class对象
      Class c = Class.forName("demo0425.Person");
      // 获得所有构造方法
      Constructor[] constructors = c.getConstructors();
      for (Constructor constructor : constructors) {
          System.out.println(constructor);
      }
      
  4. 获取所有的构造方法(公共+非公共)

    • getDeclaredConstructors()

二、成员变量

  1. 获取指定公共成员变量

    • getField()
    • field.set(Object obj,Object value)
    • field.get(Object obj)
    Person o = new Person();
    Class c1 = Class.forName("demo0425.Person");
    System.out.println("====获取指定字段=");
    Field field = c1.getField("name");
    field.set(o, "Jerry");
    System.out.println(field.get(o));
    
  2. 获取指定所有成员变量(公共+非公共)

    • getDeclaredField()

      System.out.println("====获取私有字段=");
      Field field2 = c1.getDeclaredField("age");// 获得私有字段
      // 设置私有字段可访问
      field2.setAccessible(true);
      field2.set(o, 25);
      System.out.println(field2.get(o));
      
  3. 获取所有公共的成员变量

    • getFields()

      System.out.println("======获取所有字段,不包括私有字段=");
      Field[] fields = c1.getFields();
      for (Field field1 : fields) {
          System.out.println(field1);
      }
      
  4. 获取所有成员变量(公共+非公共)

    • getDeclaredFields()

    • 非公共需要使用setAccessible(true);

      System.out.println("======获取所有字段,包括私有字段===========");
      Field[] declaredFields = c1.getDeclaredFields();
      for (Field declaredField : declaredFields) {
          System.out.println(declaredField);
      }
      

三、方法

  1. 获取指定公共方法

    • getMethod()
    • 根据方法名获取以及参数类型对应的类对象来指定获得
    • 调用方法invoke(Object obj,Object… args)
  2. 获取所有公共方法

    • getMethods()
  3. 获取指定方法(公共+非公共)

    • getDeclaredMethod()
  4. 获取所有方法(公共+非公共)

    • getDeclaredMethods()

注意:非公共使用时需要使用:setAccessible(true)

标签:反射,java,构造方法,System,获取,公共,println,out
From: https://www.cnblogs.com/ning23/p/18195991

相关文章

  • java中的拷贝
    目录1.浅拷贝(只拷贝原对象的地址)2.深拷贝(拷贝原对象的所有值)深拷贝的方式这里说的拷贝主要是针对引用类型,而对于基本数据类型,拷贝就是直接把值给另一个对象1.浅拷贝(只拷贝原对象的地址)原对象的值发生变化,拷贝对象的值也会随之发生变化,因为原对象和拷贝对象是同一块空间/......
  • LLM-通义千问:掌握的Java知识过于零散,怎么系统地串一串
    要系统地整理和深化你的Java知识,可以遵循以下几个步骤和策略:1.回顾基础语言基础:从Java的基本语法开始,包括变量声明、数据类型、运算符、控制结构(if-else,for,while等)、数组和方法定义。面向对象编程:深入理解类与对象、继承、封装、多态这些核心概念,并实践如何设计良好的类......
  • java下载zip文件
    一、使用工具*java.utils下的ZipOutputStream*java.net的http请求工具HttpURLConnection二、zip下载1.通过浏览器以附件的形式下载到客户端思路:response的write方法要写出一个byte[],所以我们需要从ZipStreamOutputStream中获取到byte[]。在java中......
  • JavaSE入门学习
    Java入门学习目录Java入门学习Java特征和优势Java三大版本开发环境搭建JDK下载及安装配置环境变量HelloWorld及简单语法规则使用IDE开发1.创建一个Java项目(IDEA)2.在该项目src目录下new一个class文件3.编辑代码4.运行代码Java特征和优势简单性面向对象可移植性高性能......
  • 在Linux中,如何进行Java应用性能调优?
    在Linux环境中进行Java应用程序的性能调优是一个多步骤的过程,涉及到监控、分析和调整多个层面的配置。以下是进行Java应用性能调优的一些关键步骤和策略:1.监控和分析工具的使用JVM监控工具:利用jstat,jmap,jstack,和jconsole等JDK自带的工具,以及更高级的工具如VisualVM、JP......
  • JavaScript object array sort by string bug All In One
    JavaScriptobjectarraysortbystringbugAllInOnebug//purestringsarray,sortOK✅letarr=["banana","strawberry","apple"];JSON.stringify(arr.sort());//'["apple","banana","strawbe......
  • JAVA版的代码生成器gen
    自己安装方式dockerpullregistry.cn-hangzhou.aliyuncs.com/tanghc/gen:latest 下载完毕后,执行 dockerrun--namegen--restart=always\-p6969:6969\-eJAVA_OPTS="-server-Xms64m-Xmx64m-DLOCAL_DB=/opt/gen/gen.db"\-v/opt/gen/:/opt/gen/\......
  • Java面试题:让依赖注入变得简单,面对@Autowired和@Resource,该如何选择?
    @Autowired和@Resource都是JavaSpring框架中的注解,用于实现依赖注入(DI)和控制反转(IoC)。它们的区别主要在以下三个方面:源头不同 @Autowired是Spring自带的注解,而@Resource是JSR250规范中定义的注解。因此,在使用Spring框架的时候,通常建议使用@Autowired注解。  查找顺序......
  • Java响应式编程
    提纲1、响应式编程ReactiveProgramming2、ReactiveStreams3、Reactor和RxJava1、响应式编程ReactiveProgramming为了解决异步编程中出现的各种问题,程序员们提出了各种的方法和手段去解决这些问题,这些方法和手段就被称为ReactiveProgramming。ReactiveProgramming是一......
  • Java Solon v2.7.6 发布
    JavaSolon是什么框架?Java“新的”应用开发框架。开放原子开源基金会,孵化项目。从零开始构建(非java-ee架构),有灵活的接口规范与开放生态。追求:更快、更小、更简单提倡:克制、简洁、高效、开放、生态有什么特点?更高的计算性价比:并发高2~3倍;内存省50%更快的开发效......