JDK源码(十三):Class
Posted jdkSpring
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK源码(十三):Class相关的知识,希望对你有一定的参考价值。
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
在日常开发过程中,会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。比如JDBC链接:
Class.forName("com.mysql.cj.jdbc.Driver");
Class代表类的实例,表示正在运行的Java应用程序中的类和接口。Class没有公共构造函数。相反,Class对象由Java虚拟机在加载类时自动构造,并通过调用类加载器中的defineClass方法来构造。
public final class Class<T>
implements java.io.Serializable,
GenericDeclaration,
Type,
AnnotatedElement
//类加载器,在JVM中初始化
private final ClassLoader classLoader;
//反射的工厂类,但是此类并不实例化对象
//只是深度拷贝类的构造器,方法,属性
private static ReflectionFactory reflectionFactory;
private static native void registerNatives();
static {
registerNatives();
}
forName(String className)
public class Student implements Serializable {
private static final long serialVersionUID = -1L;
private String id;
private String name;
public Integer age;
public Student(){}
public Student(String id, String name) {
this.id = id;
this.name = name;
}
private int sum(int i, int j){
return i + j;
}
public Student getStudent(int id){
return this;
}
public Student getStudent(String name){
return new Student();
}
public String getInfo(){
return id + " " + name;
}
}
Student student = Student.class.newInstance();
Student student =
Student.class.getDeclaredConstructor().newInstance()
InputStream resourceAsStream =
Student.class.getResourceAsStream("application.xml");
以上是关于JDK源码(十三):Class的主要内容,如果未能解决你的问题,请参考以下文章