Java复习笔记_反射_01

2018-03-13

类的加载



当Java虚拟机要运行某个类时,如果该类还未被加载到内存当中,
虚拟机则会通过加载,连接,初始化这三个步骤实现对这个类的
初始化。


加载:指将class文件读入内存,并为之创建一个Class对象。
      任何类被使用时,虚拟机都会建立一个class对象。


连接:验证 是否具有正确的内部结构,并和其他类协调一致
      准备 负责为类的静态成员分配内存,并设置默认初始化值
      解析 将类的二进制数据中的符号引用替换为直接引用


初始化:创建对象




类初始化时机:
1.创建类的实例
2.使用类的静态成员或对其赋值(或调用静态方法)
3.使用反射方式来强制创建某个类或接口对应的Class对象
4.初始化某个子类(它的父类全部都要先于子类初始化)
5.直接使用java.exe命令来运行某个主类


类加载器:
1.负责将.class文件加载到内存当中,并为之生成对应的Class对象




三种类的加载器:
1.Bootstrap ClassLoader 根类加载器 也称为引导类加载器,负责Java核心类的加载
2.Extension ClassLoader 扩展类加载器
3.System    ClassLoader 系统类加载器






反射


Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动
态调用对象的方法的功能称为Java语言的反射机制。




获取Class对象的三种方式:


查阅JDK 1.6 API 文档可知:
public final class Class<T>
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。
        Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器
        中的 defineClass 方法自动构造的。 





方式一:
 Person p = new Person();
 Class  c = p.getClass();


方式二:
 Class  c2 = Person.class;
 每个类型,包括基本和引用类型,都会赋予这个类型一个静态属性,属性名为class


方式三:
 Class  c3 = Class.forName("com.xiao.reflection.Person"); //类的全路径名













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值