Java反射原理

来源:互联网 发布:骑马与砍杀捏脸数据女 编辑:程序博客网 时间:2024/06/05 10:02

一  反射机制的概念:

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

二  反射机制的应用:

生成动态代理,面向切片编程(在调用方法的前后各加栈帧).

三  反射机制的原理:

1  首先明确的概念: 一切皆对象----类也是对象.

2  然后知道类中的内容 :modifier  constructor  field  method.

3  其次明白加载: 当Animal.class在硬盘中时,是一个文件,当载入到内存中,可以认为是一个对象,是java.lang.class的对象.

当运行程序时,实例化时产生Animal.class对象,这两个对象有什么区别?

如下图,上面的Animal.class对象是java.lang.class的对象;下面的对象是Animal.class实例化产生的对象

 

  反射机制简单实例代码

com.demo.util.com.demo.util

public class ReflectDemo {public static void refTest(){String className  = "com.demo.util.TestConnection" ;Object o = null ; try {// 通过反射机制,使用类装载器,装载该类Class<?> cl = Class.forName(className) ;//输出反射得到的类System.out.println(cl);//创建该类的实例,转化为接口 o = cl.newInstance() ; //获取某个特定的方法  通过:方法名+形参列表Method method = cl.getDeclaredMethod("testConnection" , Integer.class) ; // 通过反射机制执行方法Object retValue = method.invoke(o  , 5 );System.out.println(retValue);} catch (Exception e) {e.printStackTrace() ; }}public static void main(String[] args) {refTest() ; }}

com.demo.util.TestConnection
public class TestConnection {public TestConnection(){System.out.println("This is TestConnection !!! ");}public Integer testConnection(Integer time){System.out.println("This is TestConnection's testConnection()  !!! ");return time ; }}




 
原创粉丝点击