Class类源码浅析


在java运行的应用中,类和接口代表着Class的实例。枚举是类的一种,注解是接口的一种,数组是属于类。

Class的构造函数

//只允许JVM创建Class对象
private Class() {}
Class的部分函数通过全类名,获取Class
Class<?> forName(String className)
通过Class对象获取类的实例
T newInstance()
获取类的名称,name将被缓存减少VM的调用次数
private transient String name;
 public String getName() {
        String name = this.name;
        if (name == null)
            this.name = name = getName0();
        return name;
    }
获取加载该类的类加载器
ClassLoader getClassLoader()
获取公有的构造函数
public Constructor<?>[] getConstructors() throws SecurityException {
		//判断是否有公有构造函数
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
        return copyConstructors(privateGetDeclaredConstructors(true));
    }
获取所有公有字段
public Field[] getFields() throws SecuityException {
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
        return copyFields(privateGetPublicFields(null));
    }
获取所有公有的方法
public Method[] getMethods() throws SecurityException {
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
        return copyMethods(privateGetPublicMethods());
    }

获取私有构造方法、属性以及方法,加Declared,例如getDeclaredFields。
更多的内容可以看Class源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值