第十天Java基础增强(反射)

反射的增强 TypeOf 类深度解析:增强的 Java 反射工具 TypeOf<T> 是 Gradle 提供的类型安全反射工具类,封装并增强了 Java 标准反射 API,专门处理复杂泛型类型信息。其核心设计包括: 类型安全封装 - 通过泛型参数 T 保证编译时类型安全,内部封装 ModelType 提供丰富类型操作能力 强大功能: 完整泛型类型支持 类型关系检查 复杂类型查询 通配符和数组类型处理 核心方法: 多种类型创建方式 类型特性检查 类型结构查询 类型安全转换 应用场景: 插件开发中的任务输入类型 阅读详情

1. Junit(测试)

1.三个注解
@Before
@Test
@After
2.一个方法
Assert.assertEquals(7,add);

2. 反射

1.什么是反射
将字节码文件加载到内存中
2.反射的好处
在程序的运行过程中操作这些对象
解耦,提高程序的扩展性
3.获取class对象的三种方式
Class.forName(“全类名”)
常用于配置文件加载类
类名.class 通过类名的class的属性获取
常用于传递参数
对象.getClass() : 该方法在Object中定义
常用于对象获取字节码
4.同一个字节码文件在程序中,只会被加载一次

常用的方法

1.获取成员变量

Field[] getFields() : 获取所有的public修饰的成员变量
Field getField(String name) : 获取指定的
///
Field[] getDeclaredFields() : 获取所有的成员变量
Field getDeclaredField(String name) : 获取指定的
////获取有访问权限的成员变量时,需要忽略权限修饰
f.setAccessible(true);
///获取完变量后需要对他进行操作需要有一个对象

Class aClass = Class.forName("demo04.Calculator");
Field a = aClass.getField("a");
Calculator calculator = new Calculator();//任何情况下操作都需要传递一个对象,才能对其中的变量、方法、构造方法进行操作
a.set(calculator,"张大爷");
Object o = a.get(calculator);

2.获取构造器,想要获取构造方法就必须获取构造器

Constructor<?>[] getConstructors() : 获取所有的构造器
Constructor< T >[] getConstructor(类<?>… paramenterTypes) :获取指定参数的构造器

Constructor< T > getDeclaredConstructor(类<?>… paramenterTypes)
Constructor<?>[] getDeclaredConstructors() :所有包括私有的

通过构造器获取构造方法
Constructor constructor = aClass.getConstructor(String.class, int.class);
Object o = constructor.newInstance(“String参数”,int参数) 无参数为空参构造方法

获取空参构造方法的简单方式
Class类中的newInstance()方法
aClass.newInstance();

使用getDeclaredConstructor时也要忽略权限检测
constructor .setAccessible(true);

Class aClass = Class.forName("demo04.Calculator");
Constructor constructor = aClass.getConstructor(String.class, int.class);
Object cons = constructor.newInstance("你好", 19);

3.获取普通方法

Method[] getMethods() 获取所有
Method getMethod(String name,类<?>…) 获取指定名称,参数的方法

Method[] getDeclaredMethods()
Method[] getDeclaredMethod(String name,类<?>…)
method.getName() 获取方法名

Class<Calculator> aClass = Calculator.class;
Method method = aClass.getMethod("getName");//获取有参方法,需要加上参数列表
method.invoke(new Calculator());
/*
Method method = aClass.getMethod("getName",String.class);
method.invoke(new Calculator(),"你好");
*/

4.案例

从配置文件中读取类信息和方法信息,调用该类的方法

 //1.加载配置文件
        Properties pro = new Properties();//使用Properties集合获取配置文件信息
        ClassLoader classLoader = demo05.class.getClassLoader();//找到本类.class文件夹
        InputStream is = classLoader.getResourceAsStream("pro.properties");//找到.class下面的配置文件,并读取为流
        pro.load(is);//将流写入到集合中
        String className = pro.getProperty("className");//在集合中找到指定元素
        String method = pro.getProperty("methods");
        //2.有了类与方法
        Class aClass = Class.forName(className);//加载类文件
        Object o = aClass.newInstance();//调用空参构造方法去创建对象
        Method method1 = aClass.getMethod(method);//获取需要被执行的方法
        method1.invoke(o);//调用方法
Java反射、注解 最近本着不求甚解的态度重温了一下主流框架的源码,所以趁热打铁的总结一下,学习框架或开发框架所必备的基础知识: Java反射 Java注解 注解代码自动生成 Java动态代理 AOP 一、反射 1.1、简介 本文简单总结一下Java反射和注解,反射可以算是必备条件了,基本学习的主流框架中都会看到反射的身影,他的灵活使用也为很多逻辑的扩展提供了可能,通过Java的反射机制,可以在程序中访... 阅读详情

相关推荐

java 反射

本篇文章主要梳理java反射相关知识点。

m0_59748326的博客 1224

【Java】基础增强之反射

什么是反射 官方描述 Java反射机制是在运行状态中 对任意一个类 都能够知道这个类的属性和方法 对任意一个对象都能够调用它的任意一个方法和属性 这种动态获取的信息以及动态调用对象的方法得功能称为Java语言的反射机制 我的理解 强行窥探隐私 并对你洗脑 让你按照我的命令做事 反射的原理 (1)Java文件保存到本地硬盘 生成 .java 文件 (2)编译java文件生成 .class 文件 (3)使用Jvm将class文件通过类加载器加载到内存中 (4)class文件在内存中使用...

ESCIC的博客 458

Orale EBS R12 AP应付模块 发票导入接口(Interface)

ap_interface_groups_s.nextval; ap_invoices_interface_s.nextval; ap_invoice_lines_interface_s.nextval; SELECT * FROM ap_invoices_interface ih; SELECT * FROM ap_invoice_lines_interface il; SELECT * FROM...

qq_41206741的博客 3319

java基础增强之反射

for循环增强 数组: int a[]= {1,2,3,4,5,6}; for(int i:a) { System.out.println(i); } int a[][]= {{1,2,3},{4,5,6},{7,8,9}}; for(int[] i:a) { for(int j:i) { System.out.println(j); } } li...

小猫咪的博客 274

5分钟搞定阿里云千问大模型API申请:手把手教你获取API Key

本文提供了一份高效的阿里云通义千问大模型API Key获取实战指南。通过清晰的步骤,帮助开发者在五分钟内完成从账号准备、精准导航控制台到创建并验证API Key的全过程,并强调了密钥安全管理和基础调用测试的重要性,助力快速集成AI能力。

ol789012345的博客 1355

F5高可用HA配置详情

F5 HA详细配置

weixin_45843944的博客 3026

java反射基础

Java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。

学习指针路上的小学渣的博客 1945

保姆级教程:断网环境下用Flexnet服务器搞定SolidWorks 2021安装与破解(附错误5解决方案)

本文提供SolidWorks 2021在断网环境下的企业级部署指南,详细解析Flexnet服务器本地化工作原理,并给出安装与破解的实战方案,特别针对常见的'错误5'问题提供多维度解决方案。适用于需要内网隔离或移动办公的工业设计场景,确保数据安全与授权合规。

weixin_28683391的博客 301

java基础增强---反射

——- android培训、java培训、期待与您交流! ———- 一、反射的基石–Class类 1、Java程序中的各个java类属于同一事物,描述这些类事物的java类名就是Class。 2、对比提问:从多的人用一个什么类表示?从多的java类用一个什么类表示? 人类—Person java类–Class 注意这里Class是大写的,不是关键字class。 3

movingleft的专栏 455

OpenCV实战:5分钟搞定图像拼接(附Python代码)

本文通过OpenCV实战教程,详细讲解如何使用Python在5分钟内完成图像拼接。重点介绍`findHomography`函数和单应性矩阵的应用,提供完整的代码示例和常见问题解决方案,帮助开发者快速掌握图像拼接技术。

weixin_26833503的博客 121

VS Code下载安装与使用教程

VSCode下载安装与使用教程

weixin_46713695的博客 4万+

Java增强_反射的总结

---------------------- android培训、java培训、期待与您交流!  一、反射概述Class 1)反射的基石->Class类,Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class,而类是用来描述对象的。 2)众多的人用一个什么类表示?众多的Java类用一个什么类表示? ①人-Person ②Java类-->

java 笔记本 1039

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

算法如诗的博客 1299

java基础增强

1. 静态导入和自动装箱拆箱 (1).静态导入: 导入java里面类的静态成员 import static 包名 类名 静态属性/静态方法/* (2).自动装箱拆箱: 自动装箱:把基本数据类型赋值给对应的包装类(对象) 自动拆箱:把包装类的对象赋值给对应的基本数据类型 package com.study.lgs; import static java.lang.System.out; im...

weixin_39654286的博客 4651

Flutter SDK的删除与重装:一步步教你如何轻松搞定

在Flutter开发过程中,我们可能会遇到一些需要重新安装Flutter SDK的情况,例如升级Flutter版本、解决依赖冲突等。本文将详细介绍如何删除并重新安装Flutter SDK,让你轻松应对各种问题。

理论都是虚的,代码才是王道。 2247

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

反射基础(一)

文章目录1.什么是反射1.1 定义1.2 优点2.获取Class类对象的三种方式2.1 类名.class2.2 对象.getClass()2.3 Class.forName("包名.类名")2.4 三种方式创建的class对象的引用指向同一个class3.反射获取构造方法并使用3.1 Class类中获取构造方法3.2 使用构造方法创建对象4.反射获取成员变量并使用4.1 Class类获取成员变量对象的方法4.2 给成员变量进行赋值5.反射获取成员方法并使用5.1 Class类中用于获取成员方法的方法5.2

wxc1207的博客 1823

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JAVA基础| 反射

在 Java 中,只有 JVM 能创建Class实例,我们自己的 Java 程序无法直接创建。当 JVM 加载一个 class 时,会为其创建一个对应的Class类型实例,该实例保存了该 class 的所有完整信息,包括类名、包名、父类、实现的接口、所有方法、字段等。通过Class实例获取 class 信息的方法被称为反射(Reflection)。利用反射,我们可以在运行时动态获取对象的类型信息、操作对象的字段和方法,甚至创建对象实例,极大地增强了 Java 程序的灵活性。

2301_79433391的博客 1055

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java基础之反射详解

java中的反射大家或多或少都听过,本文给大家详细介绍反射的相关知识。首先给大家介绍的就是Java中的类加载器。 1.类加载器 1.1类加载 类加载的描述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化 类的加载 就是指将​​class文件​​读入内存,并为之创建一个​​ java.lang.Class 对象​​ 任何类被使...

Trouvailless的博客 1197

Java基础【反射】

反射是指在程序运行时检查、获取和操作类的信息的能力。在 Java中,反射机制允许程序在运行时动态地加载类、调用方法、访问属性等,而不需要在编译时确定这些元素。反射机制提供了一种途径,使得程序可以在运行时获取类的信息并对其进行操作,这使得程序具有更大的灵活性和可扩展性。

qq_61905492的博客 932

科普文:Java基础系列之【你必须知道的框架基础-反射/代理】

反射是基础,通过反射获取对象及其属性和操作;代理则可以将反射出来的类包装成目标类,然后构建一个代理类,通过代理类来操控目标类。Java基础系列之【Java动态代理的应用场景和基本原理 】-优快云博客科普文:Java基础系列之【字节码增强技术探索】-优快云博客科普文:Java基础系列之【字节码应用案例Fastjson原理和实操说明】-优快云博客科普文:Java基础系列之【JVM 字节码操作 ASM 框架概叙】-优快云博客科普文:Java基础系列之【java动态代理基本原理及proxy源码分析五】

为无为,事无事,味无味。 1597

java基础——反射

反射

qq_52629349的博客 1919

【Java基础 | 第四篇】反射 和 代理

介绍了Java反射机制及其应用场景。反射允许程序在运行时获取类的完整结构信息,动态创建对象、调用方法和修改字段值。主要应用包括:1)依赖注入框架(如Spring)的组件扫描和实例化;2)注解处理;3)动态代理实现AOP;4)ORM框架的数据库映射。重点对比了JDK动态代理和CGLIB动态代理的实现原理、优缺点和使用场景。最后指出动态代理在Spring AOP中的典型应用,以及静态代理与动态代理的核心差异。全文通过代码示例展示了反射和代理技术的实际应用,为Java开发者提供了深入理解这些核心机制的系统

h52412224的博客 2895

Java 基础——反射

目录1.反射概述2.获取Class类对象的三种方式3.通过反射获取构造方法4.通过反射获取公共构造方法并创建对象5.通过反射获取私有构造方法并创建对象6.Class类获取成员变量对象7.通过反射获取私有的成员变量8.通过反射获取成员方法 本文章大部分笔记整理来自于视频https://www.bilibili.com/video/BV12k4y1q73J?p=322 1.反射概述 反射是指在程序运行时获取一个类的变量和方法信息(即JVM读取相应Class字节码文件),然后通过获取的信息来创建对象并调用方法

代码星辰的博客 1162

Java反射

反射获取class对象,实例化对象,获取字段操作字段和方法调用。反射的实际应用动态代理

zxwyhzy的博客 1249

Java反射基础以及扩展使用

导语 反射是一种具有与Java类进行动态交互能力的一种机制,在Java和Android开发中,一般需要访问隐藏属性或者调 用方法改变程序原来的逻辑时会用到,这个比较常见,由于一些原因,系统并没有开放一些接口出来,这个时候利 用反射是一个有效的解决方法,这个下文会有案例去讲;另外常见的注解框架也是在运行时利用反射机制来获取 的。在模块化和插件化开发中更离不开反射,离开了反射它什么也做不了。 一...

王温暖的博客 532

20个Java反射最佳实践:从基础到高级的全面指南

本文总结了20个Java反射最佳实践,涵盖从基础到高级的应用场景。反射机制为框架开发(如Spring、MyBatis)提供了强大支持,但不当使用会导致性能、安全和维护问题。 核心实践包括: 缓存反射对象以提升性能 区分getMethods()和getDeclaredMethods()获取方法 正确处理InvocationTargetException还原真实异常 谨慎使用setAccessible()平衡灵活性与封装性 利用泛型增强类型安全性 高级技巧涉及: 方法缓存的多层ConcurrentHashMap

excellent_fish_c的博客 1362
上一篇: 第九天Java基础(引用)
下一篇: 第十天Java基础(注解)
RestartJava
博客等级 码龄7年 1粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值