Java Class类

本文详细解读Java中的Class对象,介绍了如何通过不同方式获取Class对象,以及如何从Class对象中获取类型信息,如包名、类名、继承关系和实现的接口。重点强调了Class对象的唯一性和JVM加载过程。
摘要由CSDN通过智能技术生成

说明:

所有的 Java 类型(包括基本数据类型、引用数据类型、void)被加载到内存后,或者编译器自动编译生成的 class 字节码,最终都会用一个 Class 对象表示。所以Class是表示创建的类的类型信息。每个通过关键字class标识的类,在内存中有且只有一个与之对应的Class对象来描述其类型信息,无论创建多少个实例对象,其依据的都是用一个Class对象。Class类只存私有构造函数,因此对应Class对象只能有JVM创建和加载。Class类的对象作用是运行时提供或获得某个对象的类型信息

获取Class对象的方法:

Class.forName(“类的全限定名”):forName在执行的过程中发现如果类还没有被加载,那么JVM就会调用类加载器去加载此类,并返回加载后的Class对象

实例对象.getClass()

类名.class (类字面常量)

从 Class 中获取信息

class Candy {
    static {   System.out.println("Loading Candy"); }
}
public class Main {     //Class.forName(“类的全限定名”)
    public static void main(String[] args) throws ClassNotFoundException {
        List<Class<?>> list = new ArrayList<>();
        list.add(String.class);   //使用class关键字,通过类名获取
        list.add(Class.forName("java.lang.String"));   //使用Class类静态方法forName(),通过包名.类名获取,注意返回值是Class<?>
        list.add("zzp".getClass());  //通过实例对象获取

        for (Class<?> aClass : list) {
            System.out.println(aClass);
        }

    }
}

注意:Candy的代码块只执行了一次,说明其Class类只被加载了一次,Class唯一。

从Class类中获取信息

public static void main(String[] args) {
        System.out.println(String.class.getPackage());  //获取package
        System.out.println(String.class.getName()); //获取类名
        System.out.println(Integer.class.getSuperclass());  //获取父类
        System.out.println(Arrays.toString(String.class.getInterfaces()));  //获取实现接口
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值