当前位置: 首页 > ops >正文

《Java 反射全攻略1》

反射就是剖析类对象,动态获取类信息 类内容 类组成的能力

获取类信息的三种方式

class.forname()

对象.getClass()

类名.class

以下是代码实现

package com.qcby.c_reflection;public class DemoTest {public static void main(String[] args) throws ClassNotFoundException {//1 对象.getClass()Person person = new Person();Class<? extends Person> aClass = person.getClass();System.out.println("aClass = " + aClass);System.out.println("===============");//2 类。classClass<Person> personClass = Person.class;System.out.println("personClass = " + personClass);//3Class.forNameClass<?> aClass1 = Class.forName("com.qcby.c_reflection.Person");System.out.println("aClass1 = " + aClass1);}
}

反射构造方法&暴力反射

反射所有的public构造方法

代码实现

package com.qcby.c_reflection;import java.lang.reflect.Constructor;public class DemoTest2 {public static void main(String[] args) {Class<Person> personClass = Person.class;//获取所有public的构造Constructor<?>[] constructors = personClass.getConstructors();for (Constructor<?> constructor : constructors) {System.out.println(constructor);}}
}

获取空参的构造方法

代码实现

package com.qcby.c_reflection;import java.lang.reflect.Constructor;public class DemoTest3 {public static void main(String[] args) throws Exception{Class<Person> personClass = Person.class;Constructor<Person> constructor = personClass.getConstructor();System.out.println("constructor = " + constructor);/*** 好比是 Person = new Perosn()*/Person person = constructor.newInstance();System.out.println("person = " + person);}
}

获取所有构造函数,包括private

代码实现

package com.qcby.c_reflection;import java.lang.reflect.Constructor;public class DemoTest4 {public static void main(String[] args) {Class<Person> personClass = Person.class;Constructor<?>[] declaredConstructors = personClass.getDeclaredConstructors();for (Constructor<?> declaredConstructor : declaredConstructors) {System.out.println("declaredConstructors = " + declaredConstructor);}}
}

获取private以及更改修改权限

constructor.setAccessible(true); 为true 表示可以更改private

package com.qcby.c_reflection;import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;public class DemoTest5 {public static void main(String[] args) throws Exception {Class<Person> personClass = Person.class;Constructor<Person> constructor = personClass.getDeclaredConstructor(String.class);constructor.setAccessible(true);Person person = constructor.newInstance("山上");System.out.println(person);}
}

http://www.xdnf.cn/news/14950.html

相关文章:

  • 【读代码】GLM-4.1V-Thinking:开源多模态推理模型的创新实践
  • 开源 python 应用 开发(四)python文件和系统综合应用
  • linux wsl2 docker 镜像复用快速方法
  • 分布式理论:CAP、Base理论
  • 无重叠区间问题
  • HDLBits刷题笔记和一些拓展知识(十一)
  • git-安装 Gerrit Hook 自动生成changeid
  • Java-Collections、Map
  • 力扣-136.只出现一次的数字
  • C语言宏替换比较练习
  • .NET9 实现对象深拷贝和浅拷贝的性能测试
  • C#使用Semantic Kernel实现Embedding功能
  • 自动化一次通过率
  • LLM探索的时代
  • 【web安全】SQLMap 参数深度解析:--risk 与 --level 详解
  • leetcode202.快乐数
  • 【数据结构】复杂度分析
  • 【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回
  • LeetCode 1248.统计优美子数组
  • Coze智能体工作流:1分钟生成10个儿童卡通童话故事视频,无需剪辑
  • 一天一道Sql题(day02)
  • 单机分布式一体化数据库的架构设计与优化
  • Android Handler机制与底层原理详解
  • 【芯片测试篇】:93K测试机I2C的设置和调试
  • 可达性分析算法Test1
  • 基于springboot的非遗传承宣传平台
  • 短视频矩阵管理平台的崛起:源头厂商的深度解析
  • 车载通信架构 --- 以太网相关网络安全
  • c++文件操作
  • Git 安装避坑指南:从环境检查到高级配置的全流程解析