java.lang.Class

Java.lang.Class

Class 是java中的一个类,对应我们熟悉的知识,Class类也有自己的属性和函数,特殊的地方在于,它是用于封装JVM中运行的类信息的。例如平时熟悉的类,int,float等或者是我们自己写了一个student类,它们都是Class类的对象。

 

当一个类或者接口被装载到JVM时,就会产生一个与之对应的Java.lang.Class对象,可以通过这个对象对被装入类中的信息进行访问。

 

怎么来理解,这里我们举一个例子,假设一个Student类被装入JVM时,那么系统就生成了一个Student对象,而Student的属性和函数便被写入了一个叫Student.class的文件当中,并被封装起来,可以理解class就是Class的一个属性,而类对象的内容就是classs的属性值。通过Student我们访问了Class中class这个信息。

 

Class对象!=类的实例对象,怎么理解?

举例:

Student a;

a=new Student();

通过构造函数生成一个名为a 的实例对象,也可以通过这样的方法生成一个名为b的实例,并且a,b都会占用内存实际空间,而Class对象,在内存中只有一块,看code

Class a= Class.forName(“Student”);

Class b=Class.forName(“Studnet”);

在内存当中,a 和 b都会指向同一块Student内容空间,可以理解为a,b都是Student对象只是一个引用。

 

接下来,我们来看一下Class类中的比较常用的newinstance()这个方法来进一步分析反射机制;

 

介绍方法之前,我们得知道,访问类的方法,要通过对象进行访问,那么我们怎么获得Class有些什么对象呢?一共有三种方法,一个是通过Object的getClass()的方法,每一个对象都能用这个方法;二是通过.class的方法,这是直接通过类的方式来返回类对象,而不需要类的实例;第三种就是通过Class类里静态方法,Class.forName(),返回的是括号里的类对象的引用:public static Class forName(String className) throwsClassNotFoundException。

只有方法3是动态编程。

 

反射机制:

在java中,与反射机制的包有两个,java.lang.reflect ;java.lang.Class。

反射机制的目的是为了要实现动态编程,很多时候我们并不知道具体的对象是什么类型(与工厂模式联想),这时候我们就可以通过Class来创建一个类对象的引用,最终实现访问具体类信息的目的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值