news 2026/4/17 15:30:36

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
反射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 + "]"; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 16:33:21

【专家级部署教程】:智谱Open-AutoGLM GPU加速部署全流程详解

第一章&#xff1a;智谱Open-AutoGLM模型部署概述智谱Open-AutoGLM是一款面向自动化任务的大型语言模型&#xff0c;支持代码生成、自然语言理解与多轮对话等能力。其开源版本可在本地或私有云环境中部署&#xff0c;适用于企业级AI应用开发与定制化服务构建。核心特性 支持自然…

作者头像 李华
网站建设 2026/4/15 18:36:55

AI技术驱动下的SEO关键词优化策略与实践分享

随着AI技术的发展&#xff0c;SEO关键词优化的方式也随之转变。AI提供的数据分析能力使企业可以更深入地理解用户的搜索行为。这一点尤为关键&#xff0c;因为正确选择核心关键词&#xff0c;能够提升网站在搜索引擎中的可见性。此外&#xff0c;智能算法的应用使得关键词选择不…

作者头像 李华
网站建设 2026/4/15 18:36:54

7Arduino 结构体

Arduino 结构体什么是Arduino结构体&#xff1f;在Arduino编程中&#xff0c;**结构体&#xff08;Struct&#xff09;**是一种用户定义的数据类型&#xff0c;允许你将多个不同类型的变量组合在一起。结构体非常适合用于组织和存储相关数据&#xff0c;例如传感器读数、设备状…

作者头像 李华
网站建设 2026/4/15 18:34:30

8Arduino 联合体

Arduino 联合体介绍在Arduino编程中&#xff0c;联合体&#xff08;Union&#xff09;是一种特殊的数据结构&#xff0c;它允许在同一内存位置存储不同的数据类型。联合体的所有成员共享同一块内存空间&#xff0c;这意味着在任何时候&#xff0c;联合体只能存储其中一个成员的…

作者头像 李华
网站建设 2026/4/14 20:43:09

毕业/期刊/职称论文必备!9款AI论文工具一键极速生成论文!

对于大学生、研究生、科研人员而言&#xff0c;论文写作不仅是学术能力的集中体现&#xff0c;更是毕业、发表、晋升的核心门槛。面对紧迫的时间、复杂的资料检索、严苛的格式与查重要求&#xff0c;一款真正高效的AI论文工具&#xff0c;足以改变写作格局。本文直击痛点&#…

作者头像 李华
网站建设 2026/4/15 18:34:31

Emu3.5-Image:新一代AI绘图解决方案,10万亿数据训练!

导语 【免费下载链接】Emu3.5-Image 项目地址: https://ai.gitcode.com/BAAI/Emu3.5-Image BAAI团队推出的Emu3.5-Image凭借10万亿多模态 tokens 的训练规模和创新的原生多模态架构&#xff0c;重新定义了AI图像生成的技术标准&#xff0c;为行业带来兼具高质量创作与高…

作者头像 李华