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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

反射: 在运行时, 可以获取 任意一个类的所有方法和属性   包括私有
    在运行时, 可以调用 任意一个对象的所有方法和属性

反射的前提 : 获取字节码对象   三种方式
   1. 通过对象 getClass  , 2 类名. Class  3.   Class.forName (路径 名字       )

通过反射获取构造方法  
Constructor<>[ ]  getConstructors( )   获取所有public 修饰的构造方法
Constructor<> getConstructor( Class<> ... parameterTypes )


Constructor:
        newInstance ( object...initargs )  创建一个实例

通过反射获取成员变量
//获取学生类的字节码对象
Class zlass = Class.forname( 路径 );
//获取学生类的对象
Object stu = clazz.newInstance( ) ;

Field[ ] getFields ( );    获取所有public 字段对象
       Field getField(String name) : 获取公共的成员变量对象

  Field:
        Object get(Object obj)   通过对象获取成员变量的值
         void set(Object obj, Object value)  通过成员变量对象,修改指定对象为指定的值


通过反射获取私有成员变量:
Field[] getDeclaredFields()  
Field getDeclaredField(String name)  可以看见不能访问
                setAccessible(true)   设置反射时取消Java访问检查


通过反射获取成员方法:
getMethod ( String naem,Class<>...parameterTypes ) ;
Method :
object invoke ( Object obj ,Object...args ) ;
//获取无参无返回值的方法
//获取有参无返回值的方法
//获取无参有返回值的方法

JavaBean :   类   用于封装数据   
使用公共 public 进行修饰
提供 私有private 修饰的成员变量  提高安全性
为成员变量提供公共的访问方式  getter 和setter 方法
提供公共无参的构造
实现序列号接口    Serializable


BeanUtils:   Apache  commons  提供的开源项目之一   简化JavaBean封装数据的操作
jar 包:

static void setProperty (Object beamn , String name ,Object value ) ; 给Javabean 对象成员变量赋值
eg : BeanUtils.setProperty( p,"name" , "张三") ;

  static String getProperty(Object bean, String name)  获取成员变量

  static void populate(Object bean, Map properties) : 给javabean 中成员变量添加映射关系
        populate 底层通过反射实现


注: beanButils 的setproperty和getproperty 方法底层不是直接操作成员变量,而是操作get和set 方法

4 个回复

倒序浏览
继续加油~~棒棒哒
回复 使用道具 举报
不错哦,继续努力~·
回复 使用道具 举报
回复 使用道具 举报
继续加油~~棒棒哒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马