如何获取Class对象呢?
转自:
http://www.java265.com/JavaJingYan/202206/16565125493837.html
Class对象简介说明:
Class类被创建后的对象就是Class对象,这里需要注意,Class对象表示的是自己手动编写类的类型信息。
这是什么意思呢?比如创建一个Searchin类,那么,JVM就会创建一个Searchin对应Class类的Class对象,该Class对象则保存了Searchin类相关的类型信息。
实际上在Java中每个类都有且只有一个Class对象。
每当我们编写并且编译一个新创建的类就会产生一个对应Class对象并且这个Class对象会被保存在同名.class文件里。说到.class文件,大家可能很熟悉,因为Java程序编译之后就会有.class文件。事实上,编译后的字节码文件保存的就是Class对象。
那为什么需要这样一个Class对象呢?
是这样的,当我们new一个新对象或者引用静态成员变量时,Java虚拟机(JVM)中的类加载器子系统会将对应Class对象加载到JVM中,然后JVM再根据这个类型信息相关的Class对象创建我们需要实例对象或者提供静态变量的引用值。也就是说,Class对象对于类的实例化具有非常重要的意义。没它就没法new新对象和引用静态成员变量。
这里需要再次重点提醒一下,上文说到“Java中每个类只有一个Class对象”,这句话是什么意思呢?
对于手动编写的每个Class类,无论创建多少个实例对象,在JVM中都只有一个Class对象,即在内存中每个类有且只有一个相对应的Class对象。
下文笔者讲述获取Class对象的方法分享,如下所示
实现思路: 使用Class类的forName(String clazzName)静态方法 该方法需要传入字符串参数(类的全限定类名/包含完整包名) 调用某个类的class属性来获取该类对应的Class对象 如:User.class将会返回User类对应的Class对象 调用某个对象的getClass()方法 该方法是java.lang.Object类中的一个方法
注意事项:
获取Class对象时,当未找到类时 会抛出ClassNotFoundException异常信息