Java_反射(Reflection)与序列化(Serialization)

反射

反射是Java被视为动态语言的一个关键性质。反射机制允许程序在运行时通过反射的方法取得任何一个已知类名的类的信息,包括属性,方法,构造器等,并可以通过反射修改属性和调用方法。
通过反射获取类的三种方式:

  • Class.forName(包名+类名);会加载类
  • 类名.class 不会加载类
  • 对象.getClass();

通过反射创建对象的两种方式:

  • Class对象的newInstance()方法; 默认调用无参构造器
  • 若没有无参构造器,则先getConstructor(Class…args);,con.newInstance(Object…args);

通过反射获得及修改对象的属性值:

  • Class对象getField(String 属性名)方法
  • f.get(Object obj) 获取具体对象的属性值
  • f.set(Object obj,value) 更改属性

通过反射调用方法

  • Class对象getMethod(String 方法名,Class…args);
  • m.invoke(Object 对象名,Object…args);

序列化

是一种用来处理对象流的机制。对象流就是对对象内容进行流化,流化之后可以进行读写操作,在网络间传输。序列化是为了解决在对象流进行读写操作是引发的问题。

序列化实现:将需要被序列化的类实现Serializable接口,该接口没有实现方法,只是为了标注该类对象可被序列化,然后使用一个输出流对象来构造一个对象流对象,之后使用ObjectOutputStream对象的writeObject(Object obj)方法将对象写出,要恢复的话使用输入流,readObject()方法得到对象后先判断类型是否一致,如果一致再强转。

如果该类对象属性中有需要隐藏的数据,则用transient修饰,用其修饰的属性将不会被序列化。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值