Java反射机制的基础java.lang.Class类

java.lang.Class是一个比较特殊的类,它封装了被装入到JVM中的类(类和接口)的信息。

当一个类或者是接口被转入到JVM中,便会产生与之关联的java.lang.Class对象,通过这个对象可以对被装入的类的信息进行访问。


获得一个类所对应的Class对象,有三种方式。

1.通过使用java.lang.Object中的.getClass()方法

比如:

Date date1 = new Date();

Date date2 = new Date();

Class d1 = date1.getClass();

Class d2 = date2.getClass();

System.out.println(d1.getName()); //java.util.Date

System.out.println(d1== d2); //true

上面代码中,date1.getClass()方法中返回的是封装了Date的信息的java.lang.Class对象

注意:代码中的date1和date2的getClass方法返回了相同的class对象(c1==c2的值为true)。这是因为,对于相同的类,JVM只会

载入一次,而与该类对应的class对象也只会存在一个,无论该类实例化了多少对象。

2.使用.Class的方式

使用类名加“.Class”的方式即会返回与该类对应的Class对象。例如:

Class s = String.Class;

System.out.println(s.getName()); // java.lang.String

这个方法可以直接获得与指定类联的Class对象,而并不需要有该类的对象存在。

3.使用Class.forName方法

Class有一个的静态方法.forName:

方法可以根据字符串参数所指定的类名获取与该类关联的Class对象。如果该类还没有被装入,该方法会将该类装入JVM。

需要注意的是:forName方法的参数是类的完整限定名(即包含包名)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值