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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yinrock11 中级黑马   /  2017-12-24 21:57  /  1867 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

亲爱的观众朋友们,久しぶり,好久不见。 emmmmm,你问我为啥不写日志?。废话,当时是懒,,额 ,不对,是沉迷学习了。不说废话了,开始今天的总结吧。

    反射:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法

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

   这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制.


  简单来说, 就可以把.class文件比做动物的尸体, 而反射技术就是对尸体的一种解剖.  通过反射技术, 我们可以拿到该字节码文件中所有的东西, 例如成员变量, 成员方法, 构造方法, 而且还包括私有。(强行破门)


三种获得字节码对象的方法:
       // 通过Object的getClass()方法获取,必须要有对象
       Students = newStudent();
       Classclazz = s.getClass();
       // 通过类名获取字节码对象
       Classclazz2 = Student.class;
       // static Class<?> forName(String className)

        Classclazz3 = Class.forName("com.itheima_01.Student");

    成员变量方法总结:

    Field[]getDeclaredFields()      --> 暴力反射获取所有字段(包括私有)
               FieldgetDeclaredField(String name) --> 暴力反射获取指定名称字段
               voidsetAccessible(boolean flag) --> 让jvm不检查权限
 
  成员方法总结:
    Class:
    Method getMethod(String name,Class<?>... parameterTypes)  
            //此方法由字节码对象调用
            //参数1: 要反射的方法名称
            //参数2: 此方法需要接受的参数类型(注意,传入的都是字节码)
Method:
      Object invoke(Object obj,Object... args)  
            //方法由Method对象调用
            //参数1: 要由那个对象调用方法
            //参数2: 方法需要的具体实参(实际参数)


BeanUtils的使用(重点加粗)

         setProperty 用来给对象中的属性赋值(了解)
              参数1: 需要设置属性的对象
              参数2: 需要修改的属性名称
              参数3: 需要修改的具体元素      
      
       getProperty 用来获取对象中的属性(了解)
              参数1: 要获取的javaBean对象
              参数2: 对象中的哪个属性
                  
         Populate 用来给对象中的属性赋值(掌握)
              参数1: 要设置属性的对象
              参数2: 将属性以Map集合的形式传入
                                   Key : 属性的名称
                                   Value:  属性具体的值

写完收工~





3 个回复

倒序浏览
你的观众在这里
回复 使用道具 举报
我怎么觉得是lazy
回复 使用道具 举报
这小表情也是厉害了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马