反射、克隆和类加载机制

448 阅读1分钟

反射

在运行状态中,对于任意一个类,都能知道这个类的属性和方法

作用

如果给定一个类名,就可以通过反射机制获取类的所有信息,也可以动态的创建对象和编译

原理

java语言在编译之后会生成一个class文件,反射就是通过字节码文件找到其类中的方法和属性

四大类

  • Class:类的对象
  • Constructor:类的构造方法
  • Field:类的属性对象
  • Method:类的方法

克隆

浅克隆

实现Cloneable接口并重写Object的clone()方法

深克隆

克隆类实现Serializable接口,通过对象的序列化和反序列化实现克隆

Java类加载机制

.java文件变编译成字节码文件.class,然后类加载器会读取这个文件,并转换成java.lang.Class的实例,JVM利用newInstance之类的方法创建其真正的对象

类加载器

  • ClassLoader:其他类加载的父类
  • AppClassLoader:系统类加载器,加载开发者在项目编写的类
  • BootstrapClassLoader:根加载器,不继承ClassLoader,由JVM内部实现,加载java核心类
  • Extra ensionClassLoader:拓展加载器,加载Java核心拓展类
双亲委托

每加载一个类,先获取一个系统加载类的实例,然后向上级层层请求,由最上级优先去加载。