在java运行的应用中,类和接口代表着Class的实例。枚举是类的一种,注解是接口的一种,数组是属于类。
Class的构造函数
//只允许JVM创建Class对象
private Class() {}
Class的部分函数通过全类名,获取ClassClass<?> 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源码。