class类与反射

本文探讨了Java中的class类和反射机制。new 类名() 创建实例,而 类名.class 提供类的描述。反射允许在运行时获取类的内部信息并操作对象,包括构造对象、访问成员变量和方法,以及实现动态代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反射:

一:理解class
在这里插入图片描述

  ① Class是用来描述类的类。
      比喻为"对象照镜子",可以得到的信息:某个类的数据成员名、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象。一个 Class 对象包含了特定某个类的有关信息。
  – Class 对象只能由系统建立对象。
  – 一个类在 JVM 中只会有一个Class实例。
  – 每个类的实例都会记得自己是由哪个 Class 实例所生成。
 ② Class这个类封装了什么信息?
        Class是一个类,封装了当前对象所对应的类的信息,一个类中有属性,方法,构造器等,比如说有一个Person类,一个Order类,一个Book类,这些都是不同的类,现在需要一个类,用来描述类,这就是Class,它应该有类名,属性,方法,构造器等。
        对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象。一个 Class 对象包含了特定某个类的有关信息。 
    Class 对象只能由系统建立对象,一个类(而不是一个对象)在 JVM 中只会有一个Class实例。 

解读文章:
https://www.cnblogs.com/flyme/p/4571030.html
https://www.cnblogs.com/tech-bird/p/3525336.html
:
那么问题:我们最常用的,new 类名() 和 类名.class的区别?
new xxx();是用来新建一个xxx类的实例
xxx.class返回的是描述“xxx类”的类(Class)的一个对象
class对象不是实例化对象,但是可以通过class对象获得实例化对象:

第一步:获得class对象
1.通过类名获取      类名.class    
2.通过对象获取      对象名.getClass()
3.通过全类名获取    Class.forName(全类名)
第二步:通过class对象获得实例化对象
.newInstance()

例如:
//1.获取Class对象
String className="com.atguigu.java.fanshe.Person";
Class clazz = Class.forName(className);  
        
//利用Class对象的newInstance方法创建一个类的实例
 Object obj =  clazz.newInstance();

(jvm会给每一个类,创建一个描述这个类的类,这个class类我们看不到,是在运行时创建的,拿到这个class类的对象,就可以操作这个class类的内部信息:
例如:

public class DemoTest{}
public final class Class<DemoTest>{}

DemoTest.class = 类 = 设计图
new DemoTest() = 建立物件 = 从设计图中弄一件实在的东西出来

Class c = DemoTest.class; c可以理解为类对象(模板)
DemoTest c1 = c.newInstance(); c1可以裂解为实例化对象(通过模板创造出来的实实在在的物体)
DemoTest t= new DemoTest(); t可以理解为实例化对象(通过模板创造出来的实实在在的物体)

(第三种方式的底层好像就是第二种)

二反射
Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。

Java反射机制主要提供了以下功能:

  • 在运行时构造任意一个类的对象
  • 在运行时获取任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法(属性)
  • 生成动态代理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值