class对象

class对象是由编译器编译java文件生成的字节码,里面保存了对象的信息。当程序运行需要此类时,加载器首先改类的class对象是否已经加载。如果尚未加载,默认的类加载器就会根据类名查找.class文件。与其他程序比如C++不同,java运行时并非所有类都被加载,是按需加载的方式。

Class类也是类的一种,与class关键字是不一样的,是一个实实在在的类,存在于JDK的java.lang包中。
每个通过关键字class标识的类,在内存中有且只有一个与之对应的Class对象来描述其类型信息,无论创建多少个实例对象,其依据的都是用一个Class对象。
Class类只存私有构造函数,因此对应Class对象只能有JVM创建和加载
Class类的对象作用是运行时提供或获得某个对象的类型信息,这点对于反射技术很重要。
获取对象方法
forName:forName方法是Class类的一个static成员方法,将会返回一个对应类的Class对象,因此如果我们想获取一个类的运行时类型信息并加以使用时,可以调用Class.forName()方法获取Class对象的引用,这样做的好处是无需通过持有该类的实例对象引用而去获取Class对象。
getClass:getClass()是从顶级类Object继承而来的,它将返回表示该对象的实际类型的Class对象引用。
字面型常量Class:通过字面型常量也可以获取到class对象,它在编译器就会受到编译器的检查,相对前两种方法更加安全。通过字面型常量获取Class对象的实际类型的Class对象引用并不会进行初始化的过程。
instanceof 关键字与isInstance方法:这两个方法是等价的,用来判断对象是不是某个特定的类型实例。

你可能感兴趣的:(class对象)