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

news2025/4/22 8:34:20

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

Java反射

  • Java反射
    • 1. 获取class对象的三种方式
    • 2. 反射 - 获取构造方法
    • 3. 反射 - 获取成员变量
    • 4. 反射 - 获取成员方法


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对象调用该方法。
    • 参数二:调用方法时传递的参数(没有可以不写)
    • 返回值:方法的返回值(没有可以不写)



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1136718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux - 进程的优先级 和 如何使用优先级调度进程

理解linux 当中如何做到 把一个PCB 放到多个 数据结构当中 在Linux 当中&#xff0c;一个进程的 PCB 不会仅仅值存在一个 数据结构当中&#xff0c;他既可以在 某一个队列当中&#xff0c;又可以在 一个 多叉树当中。 队列比如 cpu 的 运行队列&#xff0c;键盘的阻塞队列等等…

性能测试用例和测试结果

性能测试用例和测试结果 一 核心业务功能的TPS测试1.1 登录接口测试用例1.2 进入首页接口测试用例1.3 添加购物车接口测试用例1.4 结算和下订单接口测试用例1.5 系统资源使用率1.6 单接口测试中一个测试的各个成员接口要单独做性能统计 二 业务流程&#xff08;多接口组合&…

word行内插入mathtype 公式后行距变大解决办法

现象 word行内插入mathtype 公式后行距变大 解决方法 选中要进行操作的那些行&#xff0c;依次单击菜单命令“格式→段落”&#xff0c;打开“段落”对话框&#xff1b;单击“缩进和间距”选项卡&#xff0c;将间距的“段前”和“段后”都调整为“0行”&#xff1b;将“如果…

中国密码算法与NIST标准对比

1. 引言 NIST定义AES为标准的对称密钥加密算法。但NIST被指出可能在加密算法中添加NSA后门。为此&#xff0c;在中国&#xff0c;ShāngM (SM) 系列密码算法&#xff0c;作为TLS 1.3集成和无线认证的备选方案&#xff1a; SM2&#xff1a;定义了认证&#xff08;签名&#xf…

薅!语雀致歉送6个月会员;万字教程讲透AI视频生成;提示词14个黄金设计法则;吴恩达AI职业规划指南 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; 讯飞发布星火认知大模型 V3.0&#xff0c;并推出多款大模型产品 10月24日&#xff0c;科大讯飞正式发布「星火认知大模型V3.0」&#…

layui框架实战案例(23):select编辑回显内容及事件调用

layUI框架实战案例系列文章 layui框架实战案例(21)&#xff1a;layui上传的哪些事(layui.upload组件、 file文件域、php后台上传)layui框架实战案例(20)&#xff1a;常用条件判断和信息展示技巧(图片预览、动态表格、短信已读未读、链接分享、信息脱敏、内置框架页)layui框架实…

【经验分享】openGauss容灾集群搭建

gs_sdr命令代码解读 背景 openGauss推出了容灾架构&#xff0c;相比之前的一个集群主从架构&#xff0c;而容灾架构是两个集群间的数据同步。为了更深入了解其原理&#xff0c;本文试图通过阅读gs_sdr命令相关的代码来学习下相关的各种操作。 1.容灾搭建过程可以参考&#xf…

Ragnar-lothbrok 靶机

Ragnar-lothbrok 信息搜集 存活检测 详细扫描 后台网页扫描 网站信息搜集 secret “秘密”网页 将密文保存到 password.txt 此页面使用了 wordpress CMS 疑似用户 ragnar wpscan 也爆破出了用户 ragnar wpscan --url http://10.4.7.155/wordpress/ --enumerate u 密码获…

Node.js中的单线程服务器

为了解决多线程服务器在高并发的I/O密集型应用中的不足&#xff0c;同时避免早期简单单线程服务器的性能障碍&#xff0c;Node.js采用了基于"事件循环"的非阻塞式单线程模型&#xff0c;实现了如下两个目标&#xff1a; &#xff08;1&#xff09;保证每个请求都可以…

外汇天眼:获利数倍、财务自由不是梦? 小心网络投资诈骗4阶段!

近年来网络投资愈来愈热络&#xff0c;我们经常看到有人因做加密货币、外汇交易而致富的报道&#xff0c;并开始寻找可以获利的投资机会与渠道。 然而&#xff0c;诈骗集团也注意到这个趋势&#xff0c;因此透过假冒经纪商或开设黑平台等方式&#xff0c;伺机获取不法所得。 有…

Github.io个人主页模板(进阶版)

网上很多博客感觉是有点Outdate了&#xff0c;而且通用性不强&#xff0c;希望这篇博客能给你帮助。 【保姆级教程】手把手教你用github制作学术个人主页&#xff08;学者必备&#xff09;_github个人主页模板-CSDN博客 【GitHub】用Jekyll模板快速制作github.io学术主页 - 知…

JVS低代码表单引擎之文本框的强大作用,建议收藏!

表单是低代码最基础的数据输入的方式&#xff0c;其中文本框是配置话表单的最基础的业务能力组件之一&#xff0c;主要用于收集和展示用户录入的文本类的信息&#xff0c;例如名称、地址、描述说明等等。 那么我们接下来分几个方面分别对文本框的使用进行讲解。 基础功能 拥有…

初识Java 16-1 字符串

目录 字符串的常量和变量 不变的String常量 String变量 重载的和更快的StringBuilder 容易忽略的递归现象 对字符串的操作 格式化输出 System.out.format() Formatter类 格式说明符 Formatter转换 String.format() 新特性&#xff1a;文本块 本笔记参考自&#xff…

Creaform形创HandySCAN MAX l Elite三维扫描仪便携式3D测量解决方案

CASAIM中科院广州电子智能制造事业部连续多年荣获形创Creaform战略级代理商证书。战略级代理商是形创Creaform最高级别的合作伙伴。 2023年CASAIM中科院广州电子智能制造事业部的形创Creaform战略级代理商证书&#xff1a; Creaform 形创是便携式三维测量解决方案和工程服务领…

使用mac自带VNC公网远程控制macOS

公网远程控制macOS【使用mac自带VNC】 文章目录 公网远程控制macOS【使用mac自带VNC】前言1. 测试局域网内远程控制1.1 macOS打开屏幕共享1.2 测试局域网内VNC远程控制 2. 测试公网远程控制2.1 macOS安装配置cpolar内网穿透2.2 创建tcp隧道&#xff0c;指向5900端口 3. 测试公网…

人工智能的发展方向:探索智能未来的无限可能

原创 | 文 BFT机器人 人工智能&#xff0c;简称AI&#xff0c;是一门专注于研究计算机如何能像人类一样思考、学习和解决问题的科学。它的创造初衷是构建一个智能系统&#xff0c;能模仿、模拟甚至实现人工智能的各种功能和行为&#xff0c;随着科技的持续进步&#xff0c;人工…

TSINGSEE青犀智能分析网关裸土覆盖算法如何做到防范山体滑坡?

在雨水季节&#xff0c;特别是山区&#xff0c;十分容易发生山体滑坡现象&#xff0c;会导致山村、铁路、公路、房屋、甚至城镇被冲毁&#xff0c;造成严重的人员伤亡和财产损失。而TSINGSEE青犀智能分析网关裸土覆盖算法是一种利用图像处理技术来评估裸露土壤面积和裸露程度的…

VMware打开共享虚拟机后找不到/mnt/hgfs/文件夹,以及不能拖拽/复制粘贴等操作,ubuntu不能安装VMware tools

问题原因 我的问题出现原因是&#xff0c;安装ubuntn虚拟机的时候VMware tools没有安装好&#xff0c;需要重新安装&#xff0c;但安装选项是暗的&#xff0c;不能操作。 类似这种情况&#xff0c;虚拟机开启时也是&#xff0c;因为我虚拟机已经装好了&#xff0c;开启时是亮…

【JAVA】:万字长篇带你了解JAVA并发编程【二】

目录 【JAVA】&#xff1a;万字长篇带你了解JAVA并发编程【二】3. 线程池池化技术线程池的概念与作用什么是线程池&#xff1f;优点 Executor框架Executor框架组成部分工作任务抽象接口和类 线程池的生命周期非核心线程和核心线程ThreadPoolExecutor线程池的工作流常见的线程池…

快速解决msvcp140.dll丢失问题的5个方法,轻松修复dll问题

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。那么&#xff0c;msvcp140.dll究竟是什么&#xff1f;它丢失需要怎么修复呢&#xff1f;本文将从多个角度对这一问题进行详细解析。 一、msvcp140.dll是什么 msvcp14…