news 2026/4/20 9:54:26

反射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/17 16:35:32

Cogito v2重磅发布:109B MoE模型支持10M超长上下文

Cogito v2重磅发布&#xff1a;109B MoE模型支持10M超长上下文 【免费下载链接】cogito-v2-preview-llama-109B-MoE 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/cogito-v2-preview-llama-109B-MoE 大语言模型领域再添重磅选手——Cogito v2系列模型正式发布…

作者头像 李华
网站建设 2026/4/18 7:26:33

2025本科生必看!10个降AI率工具测评榜单

2025本科生必看&#xff01;10个降AI率工具测评榜单 2025年本科生必备的降AI率工具测评指南 随着高校对学术原创性的重视程度不断提升&#xff0c;AI生成内容&#xff08;AIGC&#xff09;检测技术也愈发严格。不少本科生在撰写论文或作业时&#xff0c;因AI率过高而被退稿、扣…

作者头像 李华
网站建设 2026/4/17 18:05:07

掌握Open-AutoGLM智能体电脑功能(从入门到精通的实战手册)

第一章&#xff1a;Open-AutoGLM智能体电脑功能概述Open-AutoGLM 是一款基于大语言模型驱动的智能体操作系统&#xff0c;专为自动化任务执行、自然语言交互与多模态计算场景设计。其核心架构融合了推理引擎、任务规划模块与外部工具调用接口&#xff0c;能够在无人干预的情况下…

作者头像 李华
网站建设 2026/4/20 4:16:22

Python如何把人体姿态向量化

想象一下&#xff0c;你正在开发一款AI健身教练APP。用户对着摄像头做深蹲&#xff0c;APP需要实时判断&#xff1a;“膝盖弯曲角度够不够&#xff1f;背是不是挺直的&#xff1f;” 计算机看不懂视频里的“人”&#xff0c;它只看得懂数字。如果你把一张照片扔给神经网络&…

作者头像 李华
网站建设 2026/4/19 20:07:29

Open-AutoGLM电脑版怎么没了?3大原因曝光及2024最新迁移指南

第一章&#xff1a;Open-AutoGLM电脑版怎么没了&#xff1f;近期&#xff0c;不少用户反馈在尝试访问 Open-AutoGLM 的电脑版本时发现官网链接失效或客户端无法下载&#xff0c;引发广泛关注。这一现象背后并非产品彻底下架&#xff0c;而是项目方正在进行架构调整与平台整合。…

作者头像 李华