Java反射机制
来源:互联网 发布:mac怎么看电池循环 编辑:程序博客网 时间:2024/06/15 17:32
可以在eclipse的VM参数中设置-verbose:class 观察详尽的类加载过程,Java类均是实际运行中从代码区加载。
jdk内置多个classloader,按照bootstrap等class loader 由内至外。
1.bootstrap class loader,用C或者汇编编写为本地库(核心类包括下面两个Classloader的类,如果用String.class.getClassLoader()
去获取类名只能看到null)
2.extension class loader 如DES等类,其类名为: sun.misc.Launcher$ExtClassLoader
3.application class loader, 如用户的自定义类的ClassLoader通常为: sun.misc.Launcher$AppClassLoader
注意到后面两个类都被定义为Launcher的内部类的。当然也可以自定义classLoader.
1. 创建类对象 Class c = Class.forName(str); //str即为类名,当然也可以写在配置文件中动态读取
2.根据类创建该对象
Oject o = c.newInstance();
3.获取该类的方法
Method[] methods = c.getMethods() ;
methods[i].getName() ; //获取方法名称
methods[i].getParameterTypes() ; //获取方法的参数名称和类型
4.调用该方法
methods[i].invoke(o, params); //传入对象和参数
jdk内置多个classloader,按照bootstrap等class loader 由内至外。
1.bootstrap class loader,用C或者汇编编写为本地库(核心类包括下面两个Classloader的类,如果用String.class.getClassLoader()
去获取类名只能看到null)
2.extension class loader 如DES等类,其类名为: sun.misc.Launcher$ExtClassLoader
3.application class loader, 如用户的自定义类的ClassLoader通常为: sun.misc.Launcher$AppClassLoader
注意到后面两个类都被定义为Launcher的内部类的。当然也可以自定义classLoader.
bootstrap class loader -> ext class loader -> application class loader -> other class loader
这些classloader对象之间以引用的方式(getParent()函数,非继承,而是对象之间的引用)获取其上一层classloader的对象,
反射机制的原理其实就是Java的classLoader根据对应的类名将类的信息(属性,函数及其参数)从代码区加载进来,然后据此创建该类的对象,同时也可以查询其方法并调用。
1. 创建类对象 Class c = Class.forName(str); //str即为类名,当然也可以写在配置文件中动态读取
2.根据类创建该对象
Oject o = c.newInstance();
3.获取该类的方法
Method[] methods = c.getMethods() ;
methods[i].getName() ; //获取方法名称
methods[i].getParameterTypes() ; //获取方法的参数名称和类型
4.调用该方法
methods[i].invoke(o, params); //传入对象和参数
0 0
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- CodeForces 669D
- 深入理解JVM 第一章 之4
- HDU 5308 I Wanna Become A 24-Point Master 循环(散乱的前缀+循环体)
- Python特殊用法[map、reduce、filter、lambda、列表推导式等]
- zookpeer api 快速理解
- Java反射机制
- hello world 编译出错
- python(四) 求两数的GCD(最大公约数)
- HDU:1551 Cable master(二分)
- sdut oj3330 顺序表应用6:有序顺序表查询
- 配置Eclipse来调试并发代码
- Condition实现原理
- struts的几个小异常
- 线程的调度