Java高级开发必须懂的反射是什么样的?

理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助。一、Class类的使用 1、万事万物皆对象,(当然,基本数据类型,静态成员不是面向对象(属于类的)),所以我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象...
Java高级开发必须懂的反射是什么样的?


理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助。

一、Class类的使用
1、万事万物皆对象,(当然,基本数据类型,静态成员不是面向对象(属于类的)),所以我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象,但是这些对象都不需要new出来,因为java.lang.Class类的构造方法是私有的
2、任何一个类都是Class类的实例对象,这个实例对象有三种表示方式:(我们新建一个Student类)(上海尚学堂java全程老师面授+实战教学)
①Classc1=Student.class;//实际告诉我们任何一个类都有一个隐含的静态成员变量class(知道类名时用)
②Classc2=stu.getClass();//已知该类的对象通过getClass方法(知道对象时用)

③Classc3=Class.forName("类的全名");//会有一个ClassNotFoundException异常
官网解释说:c1,c2表示了Student类的类类型()classtype),万事万物皆对象,类也是对象,是Class类的实例对象,这个对象我们成为该类的类类型(有点乱,但是慢慢捋一下还是能理解的)
这里有一点值得注意,当我们执行System.out.println(c1==c2);语句,结果返回的是true,这是为什么呢?原因是不管c1还是c2都代表了Student类的类类型,一个类可能是Class类的一个实例对象。
我们完全可以通过类的类类型创建该类的对象实例,即通过c1或c2创建Student的实例。
Studentstu=(Student)c1.newInstance();//前提是必须要有无参的构造方法,因为该语句会去调用其无参构造方法。该语句会抛出异常。
二、动态加载类
1、编译时加载类是静态加载类,
new创建对象是静态加载类,在编译时刻就需要加载所有可用使用到的类,如果有一个用不了,那么整个文件都无法通过编译
2、运行时加载类是动态加载类

Classc= Class.forName("类的全名"),不仅表示了类的类型,还表示了动态加载类,编译不会报错,在运行时才会加载,使用接口标准能更方便动态加载类的实现。功能性的类尽量使用动态加载,而不用静态加载。沙河电脑培训发现
很多软件比如QQ,360的在线升级,并不需要重新编译文件,只是动态的加载新的东西。

2023-04-03
mengvlog 阅读 5 次 更新于 2025-07-18 23:11:02 我来答关注问题0
  • 1、万事万物皆对象,(当然,基本数据类型,静态成员不是面向对象(属于类的)),所以我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象,但是这些对象都不需要new出来,因为java.lang.Class类的构造方法是私有的 2、任何一个类都是Class类的实例对象,这个实例对象有三种表示方式...

  • Java中的反射机制是在运行时动态获取类信息和对象方法的能力,以下是关于Java反射的简洁解读及实战要点:一、反射的基本概念 定义:反射机制允许程序在运行时动态地获取类的内部信息,并能直接操作类的字段和方法。 作用:是框架设计的核心要素,在模块化开发、动态代理设计模式以及Spring、Hibernate等框架中扮...

  •  文暄生活科普 你真的了解反射吗?

    是的,我了解反射。反射是编程中一项强大的工具,尤其在Java中,它在运行时允许我们访问类的属性和方法,是注解处理、Spring框架等高级技术的核心。以下是对反射的详细解析:1. 反射的核心概念 反射允许在运行时动态地操作类及其实例。程序启动后,Java代码执行,通过JVM解析并加载.java源文件,生成对应的C...

  •  翡希信息咨询 .Java 反射机制及项目中用到哪些

    动态代理:通过反射机制,可以在运行时动态地创建代理对象,从而实现对目标对象的代理控制。这在AOP等场景中非常有用。框架开发:许多Java框架都利用了反射机制来实现依赖注入、AOP等功能。通过反射,框架可以在运行时解析类的配置信息,并根据这些信息来实例化对象、调用方法等。动态调用方法:在不知道具体类...

  •  文暄生活科普 一文读懂java中的反射,边学边实战!

    反射的核心是通过Class实例获取类的信息,如字段和方法。例如,我们可以获取到一个对象的字段类型和值,甚至修改这些值,尽管这可能破坏封装性。对于非public字段和方法,通常需要先调用setAccessible(true)来解除访问限制,但此操作可能因为安全策略而受限。通过Method对象,我们可以调用类的方法,包括重载的方法...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部