一般步骤
- 编写java文件
- 编译java文件,得到class文件或jar文件
- 启动java虚拟机,寻找class文件或jar文件(classloader参与该过程)
- 将class文件加载为Class对象(classloader参与该过程)
- 初始化Class对象,生成实例(classloader参与该过程?)
- 调用
什么是Class
Java中一切皆为对象,Class对象可以暂时简单的、不准确的理解为class文件在内存中的体现
问题:对象又是什么?结构化的数据?
Class 对象获取
- 通过实例对象获取
Object o = new Object();
Class c = o.getClass();
- 通过类名.class获取
Class c = Object.class;
- 通过Class.forName()方法获取
Class.forName("java.lang.Object")
- 通过ClassLoader.loadClass()方法获取
ClassLoader.getSystemClassLoader().loadClass("java.lang.Object");
Class 中一些有用的信息
- 获取Class载入路径
Class.getProtectionDomain().getCodeSource().getLocation()
问题:ProtectionDomain是个什么东西?
Class Cast 的限制条件
Class Cast 成功需要满足哪些条件?