反射

一、反射的概述

反射是指对于任何一个Class类,在“运行的时候”都可以直接得到这个类全部成分。

在运行时,可以直接得到这个类的构造器对象:Constructer

在运行时,可以直接得到这个类的成员变量对象:Field

在运行时,可以直接得到这个类的成员方法对象:Method

这种运行时动态获取类信息以及动态调用类中成分的能力称为Java语言的反射机制


反射的关键:

反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分。

 HelloWorld.java  ->  javac  ->  HelloWorld.class


Class c = HelloWorld.class; 

 

二、反射获取类对象

1. 反射的第一步:获取Class类的对象

图一:

图二:

【代码示例1】Stuident类

public class Student {
}

 

2. 获取Class类对象的三种方式

方式一:Class c1 = Class.forName("全类名");

方式二:Class c2 = 类名.class;

方式三:Class c3 = 对象.getClass( );

【代码示例2】

/**
   目标:反射的第一步:获取Class对象
 */
public class Test {
    public static void main(String[] args) throws Exception {
        // 1、Class类中的一个静态方法:forName(全限名:包名 + 类名)
        Class c = Class.forName("com.itheima.d2_reflect_class.Student");
        System.out.println(c); // Student.class

        // 2、类名.class
        Class c1 = Student.class;
        System.out.println(c1);

        // 3、对象.getClass() 获取对象对应类的Class对象。
        Student s = new Student();
        Class c2 = s.getClass();
        System.out.println(c2);
    }
}

 

三、反射获取构造器对象

使用反射技术获取构造器对象并使用

反射的第一步是先得到类对象,然后从类对象中获取类的成分对象

Class类中用于获取构造器的方法

方法 说明
Constructor<?>[] getConstructors​() 返回所有构造器对象的数组( 只能拿public的)
Constructor<?>[] getDeclaredConstructors​() 返回所有构造器对象的数组, 存在就能拿到
Constructor<T> getConstructor​(Class<?>... parameterTypes) 返回单个构造器对象( 只能拿public的)
Constructor<T> getDeclaredConstructor​(Class<?>... parameterTypes) 返回单个构造器对象, 存在就能拿到

 

posted @   白森  阅读(38)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示