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

反射3-反射获取构造方法

一、反射

1. 反射获取构造方法

在Java中,反射获取构造方法是实现动态创建对象的关键技术。它使程序能够在运行时:

  • 动态加载未知类
  • 突破私有访问限制(如私有构造方法)
  • 实现框架级解耦(如Spring的Bean创建)

为什么需要反射获取构造方法的核心原因:让程序在运行时才知道要创建什么类,而不是在编译时就确定。

package com.lkbhua.MyreflectDemo2; import java.lang.reflect.Constructor; public class demo1 { public static void main(String[] args) throws Exception { /* Class类中用于获取构造方法的方法: Constructor<?>[] getConstructors() 返回所有公共构造方法对象的数组 Constructor<?> getDeclaredConstructor(Class<?>... parameterTypes) 返回所有构造方法对象的数组 Constructor<?> getConstructor(Class<?>... parameterTypes) 返回单个公共构造方法对象 Constructor<?> getDeclaredConstructor(Class<?>... parameterTypes) 返回单个构造方法对象 Constructor类中用于创建对象的方法: T newInstance(Object... initargs) 根据指定的构造方法创建对象 setAccessible(boolean flag) 设置为true,表示取消访问检查 */ // 1、获取class字节码文件对象 Class clazz = Class.forName("com.lkbhua.MyreflectDemo2.Student"); // 2、获取所有公共的构造方法 /*Constructor[] constructors = clazz.getConstructors(); for (Constructor c : constructors) { System.out.println(c); } */ // 3、获取所有构造方法 /*Constructor[] constructors2 = clazz.getDeclaredConstructors(); for (Constructor c : constructors2) { System.out.println(c); } */ // 4、获取单个公共的构造方法 /*Constructor c1 = clazz.getConstructor(); System.out.println(c1); */ // 5、获取单个构造方法 Constructor c2 = clazz.getDeclaredConstructor(String.class, int.class); System.out.println(c2); // 获得权限修饰符 int modifiers = c2.getModifiers(); // 表示临时取消权限校验 // 即: 暴力反射 c2.setAccessible(true); Student s = (Student) c2.newInstance("lkbhua", 18); } }
package com.lkbhua.MyreflectDemo2; public class Student { private String name; private int age; public Student() {} public Student(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } }
http://www.jsqmd.com/news/134438/

相关文章:

  • 【黑客入门】每日一个网安小技巧:中间人攻击这么玩
  • 爆肝整理:Elastic Agent Builder全攻略,让你的AI从“人工智障“升级为“决策大神“!
  • Docker 新手小白保姆级教程:从安装到基础操作全搞定
  • Qwen3-0.6B-FP8:0.6B参数模型的双模推理革命
  • 毕业/期刊/职称论文必备!9款AI论文工具一键极速生成论文!
  • 网络安全遇 “零日漏洞” 不用慌?光速应对技巧全解析,从零到精通收藏这篇就够!
  • IBM发布Granite-4.0-Micro-Base:12种语言AI模型新选择
  • oracle rac安装,到最后执行root.sh失败?
  • 计算IP地址聚合后可用地址数
  • 基于python框架的电影订票系统_wqc3k--论文_pycharm django vue flask
  • 从零读懂Open-AutoGLM源码,掌握自动图学习模型开发秘技
  • LightOnOCR-1B:超高效OCR神器,每页成本不到0.01美元
  • Open-AutoGLM爆火在即:3大信号表明它将成为下一个ChatGPT级现象
  • 2、MyISAM索引与InnoDB索引的区别?
  • LLM工程技能:检索增强生成 RAG 入门
  • 再见,我的本地环境:我用这套新工作流,把上线时间从1天缩短到3分钟
  • Pony V7:多功能角色生成模型重磅发布
  • 基于python的个性化商城图书购物推荐系统_1k4p4_pycharm django vue flask
  • AI“博学多才“却“一问三不知“?RAG技术让它秒变“业务专家“!小白程序员也能轻松上手的企业AI解决方案!
  • 【智普Open-AutoGLM部署避坑手册】:90%新手都会忽略的4个核心细节
  • 如何用Open-AutoGLM构建企业级图神经网络?一线专家源码实操分享
  • 001.AI生成一个网站原型
  • 天谋科技时序数据库再次通过中国信通院「可信数据库」专项评测
  • 北京颐美康科技有限责任公司实力怎么样?口碑好不好? - 工业品牌热点
  • 2025年六自由度实力厂商排行榜,六自由度生产商、专业供应商新测评推荐 - 工业品牌热点
  • 学长亲荐10个AI论文工具,继续教育学生轻松写论文!
  • 智普Open-AutoGLM部署紧急指南:如何在2小时内完成全流程上线
  • GEO产品哪家权威、服务选哪家、性价比哪家可靠? - 工业推荐榜
  • iPerf网络测速工具快速上手教程
  • ERNIE-4.5全新升级:210亿参数模型推理能力大跃升