我对Java的java.lang.Class这个类的深入理解

本文深入解析Java反射机制,介绍如何将Java类中的各种组件映射为对应的Java类,如使用Class类表示Java类,Field类表示字段等。同时探讨了Class类如何封装已加载到内存的字节码流,并提供访问方法。

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

 

类是对同一类事物的描述,字段具体的值只有到类实例化时才会指定,静态字段除外。
所有的类也是同一类事物,用Class这个类来描述。Class类与String、Person等类
是同一个级别的。
java的字节码文件被加载到方法区中后,会在堆中实例化一个java.lang.Class类的对象,
这个对象封装了方法区内的数据结构,并向程序员提供了访问方法区内的数据结构的接口

反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类用一个Class类
的对象来表示,一个类中的组成部分:成员字段,方法,构造方法,包等等信息也用一个个
的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示
Java类的Class类显示要提供一系列的方法,来获得其中的字段,方法,构造方法,修饰符,
包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、
Package等等。

模拟Class类的定义:

public class Class
{
  private Package package;
  private Modifiers[] modifiers;
  private Class superClass;
  private Class[] interfaces;
  private Field[] fields;
  private Method[] methods;

  //getter 和 setter
}

在java的Class类的源代码中没有定义上述的各种字段,只提供了getter和setter方法。因为Class类封装了他要描述的类的
已经加载到内存中的字节码流,通过这个流可以获得上述的各种字段信息。

转载于:https://www.cnblogs.com/itren/p/3484615.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值