.class和getClass()
程序员文章站
2022-07-16 22:08:07
...
java世界里一切皆是对象,所有类都默认继承Object类。 Class 类是java中的类型类,每个java对象的class类型都属于Class类型类的实例对象。
Class类也可以看成一个对象。
如何获取一个java对象的类型类
1,使用Object.getClass()方法。此处的Object需要先示例对象,才能调用该方法
2,使用java类.class 方法获取,此处为静态获取,不需要实例化对象
3,Class.forName("") Class类的静态方法,也可以获取
public static void main(String[] args) {
try {
Class clazz = Class.forName(""); //动态获取一个Class类型。运行时加载
clazz.getClass();//动态获取Class类型,这是对象实例化后的方法,基类Object类的方法。编译时加载。getClass()不是静态方法,不能用于static修饰的对象、方法、静态块
Class clazz1 = Map.class;//静态获取Class类型。不需要对象实例化,根据类名即可调用。编译时加载
//clazz.getClass(), Map.class效果是一样的,得出的结果进行equal比对是相等的
new HashMap();//静态加载。
} catch (ClassNotFoundException e) {
e.printStackTrace();
}}
(2).Test.class;
在编译时确定,返回当前类的类对象实例。不会加载静态变量
获得父类类对象: Test.class.getSuperclass()
(3).Class.forName(“类路径”);会加载静态变量,比如jdbc驱动利用这个加载一些静态属性
通过静态方法获取类对象,Class.forName("com.wan.Test");
在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象