码迷,mamicode.com
首页 > 编程语言 > 详细

Java反射机制

时间:2017-09-17 17:36:59      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:font   class类   edm   构造器   新建   tco   优点   字节码   编程   

Java反射机制

一、定义

       指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

        对于任意一个对象,都能调用它的任意一个方法;

        这种动态获取信息以及动态调用对象方法的功能叫Java语言的反射机制。

二、应用

        1、生成动态代理;

         2、面向切片编程(在调用方法的前后各加栈帧)。

三、优点与缺点

       静态编译:在编译时确定类型,绑定对象,即通过。 
       动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。 
       反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中它的灵活性就表现的十分明显。

       反射机制的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。

四、常用方法

  (1)获得构造函数的方法 

    Constructor getConstructor(Class[] params)//根据指定参数获得public构造器

    Constructor[] getConstructors()//获得public的所有构造器

    Constructor getDeclaredConstructor(Class[] params)//根据指定参数获得public和非public的构造器

    Constructor[] getDeclaredConstructors()//获得public的所有构造器 
  (2)获得类方法的方法 
    Method getMethod(String name, Class[] params),根据方法名,参数类型获得方法

    Method[] getMethods()//获得所有的public方法

    Method getDeclaredMethod(String name, Class[] params)//根据方法名和参数类型,获得public和非public的方法

    Method[] getDeclaredMethods()//获得所以的public和非public方法 
 (3)获得类中属性的方法 
    Field getField(String name)//根据变量名得到相应的public变量

    Field[] getFields()//获得类中所以public的方法

    Field getDeclaredField(String name)//根据方法名获得public和非public变量

    Field[] getDeclaredFields()//获得类中所有的public和非public方法 

五、获取Class类

Person p1 = new Person();
//下面的这三种方式都可以得到字节码
CLass c1 = Date.class();
p1.getClass(); 
//若存在则加载,否则新建,往往使用第三种,类的名字在写源程序时不需要知道,到运行时再传递过来
Class.forName("java.lang.String");

  

Java反射机制

标签:font   class类   edm   构造器   新建   tco   优点   字节码   编程   

原文地址:http://www.cnblogs.com/zfc-java/p/7536132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!