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

《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.dtcms.com/a/269923.html

相关文章:

  • LLM探索的时代
  • Java常用加密算法详解与实战代码 - 附可直接运行的测试示例
  • 【Flutter】面试记录
  • 从历史航拍图像中去除阴影
  • maven 发布到中央仓库之 Ignore Licence-04
  • RabbitMQ第一章(MQ基础与RocketMQ使用手册)
  • 【踩坑实录】RabbitMQ 高并发异常“爆仓”事故还原与配置优化实战指南
  • Next.js 实战笔记 2.0:深入 App Router 高阶特性与布局解构
  • SQLShift 重磅更新:支持 SQL Server 存储过程转换至 GaussDB!
  • 从深度学习的角度看自动驾驶
  • 半连接海外云策略:混合架构下的全球业务协同方案
  • 香港站群服务器价格怎么样?
  • 保姆级tomcat的页面部署(静态)
  • 【世纪龙科技】汽车零部件检验虚拟实训室-数字赋能职业教育
  • PHP诞生30周年
  • 文件传输安全保障:探索Hash校验的不同方法
  • 使用阿里云/腾讯云安装完成mysql使用不了
  • JavaScript中的Request详解:掌握Fetch API与XMLHttpRequest
  • 单稳态触发器Multisim电路仿真——硬件工程师笔记
  • imx6ull-裸机学习实验11——高精度延时实验
  • 铝板矫平机:精密平整的关键设备
  • AI 在生活中的应用:深度解析与技术洞察
  • [2025CVPR]SGC-Net:开放词汇人机交互检测的分层粒度比较网络解析
  • Java教程:【程序调试技巧】入门
  • Leetcode 3604. Minimum Time to Reach Destination in Directed Graph
  • Windows安装docker+Dify本地部署
  • IB智慧公交系统的设计与实现
  • Python之--列表
  • 【AI大模型】PyTorch Autograd 实战
  • 测量认知革命:Deepoc大模型如何重构示波器的存在形态