news 2026/5/1 8:43:52

反射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/23 15:06:34

【大模型落地关键一步】:智谱Open-AutoGLM本地化部署的7个核心要点

第一章&#xff1a;智谱Open-AutoGLM模型本地化部署概述智谱AI推出的Open-AutoGLM是一款面向自动化任务生成与执行的大语言模型&#xff0c;具备强大的自然语言理解与代码生成能力。该模型支持本地化部署&#xff0c;适用于对数据隐私、响应延迟和系统可控性有高要求的企业级应…

作者头像 李华
网站建设 2026/4/11 12:39:25

掌握Open-AutoGLM沉思仅需4步:打造你的第一个自反馈AI系统

第一章&#xff1a;Open-AutoGLM沉思的核心理念与系统定位设计哲学&#xff1a;让模型理解任务&#xff0c;而非仅执行指令 Open-AutoGLM沉思的核心在于构建一个具备“认知闭环”的自动化语言模型系统。它不满足于传统大模型的被动响应模式&#xff0c;而是主动解析用户意图、拆…

作者头像 李华
网站建设 2026/4/28 23:05:46

NVIDIA ChronoEdit-14B:物理感知的AI图像编辑新范式

NVIDIA ChronoEdit-14B&#xff1a;物理感知的AI图像编辑新范式 【免费下载链接】ChronoEdit-14B-Diffusers 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/ChronoEdit-14B-Diffusers 导语&#xff1a;NVIDIA推出ChronoEdit-14B&#xff0c;一款具备时间推理能力…

作者头像 李华
网站建设 2026/4/26 5:13:39

Qwen3-4B-FP8震撼发布:一键切换思维模式的高效AI模型

Qwen3-4B-FP8震撼发布&#xff1a;一键切换思维模式的高效AI模型 【免费下载链接】Qwen3-4B-FP8 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-4B-FP8 导语 阿里达摩院正式推出Qwen3系列最新成员Qwen3-4B-FP8&#xff0c;这款40亿参数的轻量级大模型首次实…

作者头像 李华
网站建设 2026/5/1 7:20:43

GLAD:大气像差与自适应光学

概述激光在大气湍流中传输时会拾取大气湍流导致的相位畸变&#xff0c;特别是在长距离传输的激光通信系统中。这种畸变会使传输激光的波前劣化。通过在系统中引入自适应光学系统&#xff0c;可以对激光传输时拾取的低频畸变进行校正&#xff0c;从而显著提升传输激光的Strehl r…

作者头像 李华