黑马程序员技术交流社区
标题:
重庆校区 javaee7 就业班day13
[打印本页]
作者:
陆陆
时间:
2017-12-24 21:47
标题:
重庆校区 javaee7 就业班day13
反射
: 在运行时, 可以
获取
任意一个类的所有方法和属性 包括私有
在运行时, 可以
调用
任意一个对象的所有方法和属性
反射的前提 : 获取字节码对象
三种方式
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 方法
作者:
陈文老师
时间:
2017-12-25 09:05
继续加油~~棒棒哒
作者:
1414225997
时间:
2017-12-25 10:20
不错哦,继续努力~·
作者:
程一奇
时间:
2017-12-25 10:30
加油加油~~~~~~
作者:
xiongliu
时间:
2017-12-26 10:50
继续加油~~棒棒哒
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2