反射
伊颦伊笑
人的悲欢并不相通
展开
-
反射——反射练习
练习一定义 PrivateTest 类,有私有 name 属性,并且属性值为 hellokitty提供 getName 的公有方法创建 PrivateTest 的类,利用 Class 类得到私有的 name 属性,修改私有的 name 属性值,并调用 getName() 的方法打印 name 属性值package reflection_;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetExc原创 2021-09-30 11:24:54 · 205 阅读 · 0 评论 -
反射——反射爆破操作方法
通过反射访问类中成员根据方法名和参数列表获取 Method 方法对象:Method m = clazz.getDeclaredMethod(方法名, XX.class);获取对象:Object o=clazz.newlnstance();暴破:m.setAccessible(true);访问:Object returnValue = m.invoke(o,实参列表);注意:如果是静态方法,则 invoke 的参数 o ,可以写成 nullpackage reflection_;imp原创 2021-09-30 10:55:04 · 645 阅读 · 0 评论 -
反射——反射爆破操作属性
通过反射访问类中的成员根据属性名获取 Field 对象Field f = clazz对象.getDeclaredField(属性名);暴破:f.setAccessible(true); // f 是 Field访问:f.set(o,值); // o 表示对象syso(f.get(o)); // o 表示对象注意:如果是静态属性,则 set 和 get 中的参数 o ,可以写成 nullpackage reflection_;import java.lang.reflect.Fiel原创 2021-09-30 09:47:58 · 227 阅读 · 0 评论 -
反射——反射爆破创建实例
演示通过反射机制创建实例package reflection_;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 19:02 2021/9/29 */public class ReflectCreateIns原创 2021-09-30 09:25:13 · 163 阅读 · 0 评论 -
反射——通过反射获取类的结构信息
第一组:java.lang.Class 类getName:获取全类名getSimpleName:获取简单类名getFields:获取所有public修饰的属性,包含本类以及父类的getDeclaredFields:获取本类中所有属性getMethods:获取所有public修饰的方法,包含本类以及父类的getDeclaredMethods:获取本类中所有方法getConstructors:获取本类中所有public修饰的构造器getDeclaredConstructors:获取本类中所有构原创 2021-09-29 18:56:03 · 310 阅读 · 0 评论 -
反射——类加载
类加载基本说明:反射机制是 Java 实现动态语言的关键,也就是通过反射实现类动态加载。静态加载:编译时加载相关的类,如果相关的类不存在则报错,依赖性强。动态加载:运行时加载需要的类,如果没有用到该类,且该类不存在,则不报错;如果用到该类,该类不存在,就报错。降低了依赖性。package reflection_;import java.lang.reflect.Method;import java.util.Scanner;/** * @Author: Gin * @Descr原创 2021-09-29 14:30:32 · 307 阅读 · 0 评论 -
反射——哪些类型有 Class 对象
哪些类型有 Class 对象外部类,成员内部类,静态内部类,局部内部类,匿名内部类interface:接口数组enum:枚举annotation:注解基本数据类型voidpackage reflection_;import java.io.Serializable;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 17:25 2021/9/28 */public c原创 2021-09-28 17:32:43 · 103 阅读 · 0 评论 -
反射——获取 Class 类对象的六种方式
Class 对象的六种获取方式package reflection_;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 17:06 2021/9/28 */public class GetClass_ { public static void main(String[] args) throws Exception { // 1. Class.forName()原创 2021-09-28 17:30:45 · 315 阅读 · 1 评论 -
反射——Class类分析及常用方法
Class 类分析Class 也是类,因此也继承 Object 类Class 类对象不是 new 出来的,而是系统创建的对于某个类的 Class 类对象,在内存中只有一份,因为类只加载一次每个类的实例都会记得自己是由哪个 Class 实例所生成通过 Class 可以完整地得到一个类的完整结构,通过一系列 APIClass 对象是存放在堆的类的字节码二进制数据,是放在方法区的,有的地方称为类的元数据(包括方法代码,变量名,方法名,访问权限等等)packag原创 2021-09-28 17:05:11 · 410 阅读 · 0 评论 -
反射——反射的优缺点和优化
反射的优缺点优点:可以动态地创建和使用对象(也是框架底层核心),使用灵活,没有反射机制,框架技术就失去底层支撑。缺点:使用反射基本是解释执行,对执行速度有影响反射调用优化 - 关闭访问检查Method 和 Field、Constructor 对象都有 setAccessible() 方法setAccessible() 方法的作用是启动和禁用访问安全检查的开关参数值为 true 表示反射的对象在使用时取消访问检查,提高反射的效率参数值为 false 则表示反射的对象执行访问检查pa原创 2021-09-28 15:38:07 · 854 阅读 · 0 评论 -
反射——反射的引入
一个需求引入反射根据配置文件 re.properties 指定信息,创建 Cat 对象并调用方法 hi()classfullpath=reflection_.Catmethod=hi快速入门package reflection_;import java.io.FileInputStream;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.lang.原创 2021-09-28 15:14:59 · 99 阅读 · 0 评论