java 反射 class

1,什么是反射?

  反射可以理解为对类的分析。 利用反射,我们可以在运行时分析类,查看类的对象

2,如何实现反射?

那就不得说与反射最为相关的类-----java.lang.Class类

比如: Person类的实例,是具体对象,xiaozhang,xiaowang,bendan

    Class类的实例,就是内存中类的字节码  ----》一个类被类加载器加载到内存,占据一部分存储空间,空间里的内容就是类的字节码,不同类的字节码文件是不同的。这一个个空间可以用对象来表示。这些对象对应的类就是Class类


3. 如何得到字节码对应的对象?

其实也是实现反射的最常用语句:

 对于类----》类名.class  --》  Person.class

对于对象----》 对象.getClass() ----> new Date().getClass()

通过类名---》Class.forName("类名")----->Class.forName(“java,lang,String");


4.都什么样的类型可以应用反射?

或者可以问:什么样的数据类型有Class的实例对象?

只要在源程序中出现的数据类型都有Class的实例对象。int,double这样的基本数据类型有其预定义的Class实例对象, int.Class ==Integer.TYPE


5. 反射有什么用?

一个类的所有成员(方法,属性...)都可以用相应的反射API类(Class类,Constructor,Field,Method。。。。)的一个实例对象来表示。得到这些实例对象,就是反射的作用。我们要知道的是,得到这些实例对象有什么用 ?怎么用 ?

Constructor类------ 类的构造方法

得到类的所有构造方法:

Constructor [] Constructors =  Class.forName("java,lang,String").getConstructors();

得到某一个构造方法:

Constructor constructor = Class.forName("java,lang,String").getConstructor("StringBuffer.class")

其余方法可通过API了解。


Field类----类的属性(或者叫类的成员变量)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值