反射、枚举

反射

类的加载:
当程序要使用某个类时,如果该类还未被加载到内存中,
则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。

    1、加载:
		就是指将class文件读入内存,并为之创建一个Class对象。
		任何类被使用时系统都会建立一个Class对象。
	2、连接:
		验证 :	是否有正确的内部结构,并和其他类协调一致
		准备 :	负责为类的静态成员分配内存,并设置默认初始化值
		解析:	把类中的符号引用转换为直接引用
	3、初始化:
	 	通过构造方法

加载时机:

    1、创建类的实例
	2、访问类的静态变量,或者为静态变量赋值
	3、调用类的静态方法
	4、使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
	5、初始化某个类的子类
	6、直接使用java.exe命令来运行某个主类

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

分类:
	Bootstrap ClassLoader	根类加载器
	Extension ClassLoader  	扩展类加载器
	Sysetm ClassLoader 		系统类加载器
作用:
	Bootstrap ClassLoader( 根类加载器)
		也被称为引导类加载器,负责Java核心类的加载
		比如System,String等。在JDK中JRE的lib目录下rt.jar文件中
		
	Extension ClassLoader (扩展类加载器)
		负责JRE的扩展目录中jar包的加载。
		在JDK中JRE的lib目录下ext目录
		
	Sysetm ClassLoader (系统类加载器)
		负责在JVM启动时加载来自java命令的class文件,
		以及classpath环境变量所指定的jar包和类路径

反射:
就是在运行状态中的一种动态调用方法或者属性的一种机制

(即获取字节码文件对象,然后剖析该类中存在哪些构造方法,哪些成员变量,哪些成员方法)

获取class文件对象的三种方式:

    1、Object类的getClass()方法
	2、静态属性class
	3、Class类中静态方法forName()
	例:
	一、
	public class test1 {
    public static void main(String[] args) {
       

        Student student = new Student();  s
        //方式1 通过该方法,获取该类对应的字节码文件对象
        Class aClass = student.getClass();
        Class aC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值