A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© pi408637535 中级黑马   /  2015-7-15 18:24  /  381 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  今天仔细看了看Java反射,现在把一些重点罗列,希望后面的同学能有收获
  反射就是把Java类中的各种成分映射成相应的java类.  构造,函数,成员
//至今我也就就在jdbc中用到反射,听说spring中会有很多反射。估计到了那个时候能更熟悉反射机制,抓紧时间学习  


Java 反射机制主要提供了以下功能:

           在运行时判断任意一个对象所属的类;
        在运行时构造任意一个类的对象;
        在运行时判断任意一个类所具有的成员变量和方法;
        在运行时调用任意一个对象的方法;
        生成动态代理。

在 JDK 中,主要由以下类来实现Java 反射机制,这些类都位于java.lang.reflect包中。
        Class类:代表一个类。
        Field类:代表类的成员变量(成员变量也称为类的属性)。
        Method类:代表类的方法。
        Constructor 类:代表类的构造方法。
        Array类:提供了动态创建数组,以及访问数组元素的静态方法。

Class类是Reflection API中的核心类,它有以下方法。
        getName():获得类的完整名字。
        getFields():获得类的public类型的属性。
        getDeclaredFields():获得类的所有属性。
        getMethods():获得类的public类型的方法。
        getDeclaredMethods():获得类的所有方法。
        getMethod(String name, Class[] parameterTypes):获得类的特定方法,name 参数指定方法的名字,parameterTypes参数指定方法的参数类型。
        getConstrutors():获得类的public类型的构造方法。
        getConstrutor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes参数指定构造方法的参数类型。
下面实例:
  1. import java.lang.reflect.*;     
  2.    
  3. public class InvokeTester {     
  4.     public int add(int param1, int param2) {     
  5.         return param1 + param2;     
  6.     }     
  7.    
  8.     public String echo(String msg) {     
  9.         return "echo:" + msg;     
  10.     }     
  11.    
  12.     public static void main(String[] args) throws Exception {     
  13.         Class classType = InvokeTester.class;     
  14.         Object invokeTester = classType.newInstance();     
  15.         // 调用InvokeTester对象的add()方法     
  16.         Method addMethod = classType.getMethod("add", new Class[] { int.class,     
  17.                 int.class });     
  18.         Object result = addMethod.invoke(invokeTester, new Object[] {     
  19.                 new Integer(100), new Integer(200) });     
  20.         System.out.println((Integer) result);     
  21.         // 调用InvokeTester对象的echo()方法     
  22.         Method echoMethod = classType.getMethod("echo",     
  23.                 new Class[] { String.class });  //获取类的方法
  24.         result = echoMethod.invoke(invokeTester, new Object[] { "Hello" });  //调用类的方法
  25.         System.out.println((String) result);     
  26.     }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马