java.lang.class对象_java.lang.Class类

一个反问?

在java面向对象的世界里,一切皆对象,我们编写的类也是java里面的东西,那么我们的编写的类是谁的对象?

任何一个类(用户创建的,或者是JDK中的类)都是java.lang.Class的实例对象。

类是对象,类是java.lang.Class类的实例对象

上面的描述只是概念的描述,通常我们使用一个类的对象,是因为这个对象提供了一些功能,那么我们如何表示Class类的对象呢 ?

第一个难题:如何表示Class类的实例,就是获取Class类的实例

通常得到一个类的实例我们通过构造器和关键字new 就可以得到 ,但Class类的对象确不能这样得到,为什么呢?

查看class类的构造函数

/*

* Private constructor. Only the Java Virtual Machine creates Class objects.

* This constructor is not used and prevents the default constructor being

* generated.

*/

private Class(ClassLoader loader) {

// Initialize final field for classLoader. The initialization value of non-null

// prevents future JIT optimizations from assuming this final field is null.

classLoader = loader;

}

我们看Class的构造函数是私有的,也就是我们无法直接手动new出Class对象的实例, 注释告诉我们只有 java虚拟机可以创建Class类的实例。

Java 提供的三种变通方法 获取Class类的实例

1. 知道类名:

Class c1 = 类名.class;

从这我们可以看出来,任何一个类都有一个隐含的静态成员变量Class

如果输出c1

class 报名.类名

2 .知道类对象

Class c2 = 类对象.getClass();

从这个我们可以看出,任何一个类都有一个隐含的成员方法getClass() 知道类路径

3.知道包名和类名(类的路径)

Class c3 = Class.forName("类的全称,包名+类名"); //会有找不到类的异常

demo

class Fool{

}

Class c1 = Foo.class;

Class c2 = foo1.getClass();

Class c3 = Class.forName("com.test.Foo");

类类型对象的用处1 创建类的对象

类类型对象的用处。

创建类的对象 ,前提要求类要有无参的构造方法,因为newInstance()调用的就是无参数的构造方法

Fool obj=(Fool)cl.newInstance()

1.需要强转 2. 有异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值