【技术实现步骤摘要】
一种基于反射与注解的类实例状态生成与恢复方法
[0001]本专利技术涉及计算机领域,尤其涉及一种基于反射与注解的类实例状态生成与恢复方法。
技术介绍
[0002]在面向对象程序运行的过程中,对象本身的成员属性,在特定的业务场景下将具有状态意义,例如“班级成绩单”这一对象中的“平均分”属性,在“计算班级平均分”的业务场景下,在读取成绩单(例如Excel表)时,平均分的计算方式为“平均分=(学生序号*平均分+成绩单[学生序号])/(学生序号+1)”。在这个业务场景下,平均分便是状态。当成绩数据对该对象不可见时,此时该对象仅能接受一个成绩数据,同时自身维护一个计数器记录学生人数,此时学生人数也会成为状态。
[0003]在上述例子中,平均分和学生人数与该业务场景“计算平均成绩”是相关的。在计算机中,该业务场景被定义为一个任务,而对象实例“班级成绩单”则是该任务的节点,节点中那些与任务结果相关的变量即为状态。
[0004]状态在分布式流批数据处理系统、多线程异步、循环IO任务等场景中是十分重要的概念,这些业务逻辑往往需 ...
【技术保护点】
【技术特征摘要】
1.一种基于反射与注解的类实例状态生成与恢复方法,其特征在于,该方法包括以下步骤:S1、在类实例中加入注解状态接口,提供基于状态注解的状态生成与恢复方法;S2、在类实例中定义状态对象接口,用于提供一种在对类不可知的情况下对类实例中的成员变量匿名快速访问的方法;并创建状态对象接口总集合;S3、为一个类实例创建一个对应的状态域对象,通过调用状态域对象的初始化方法,将该状态域对象绑定至一个类对象实例,具体为:S3.1、传入参数,通过反射获取类对象实例所有成员变量的反射对象;S3.2、对成员变量的反射对象进行遍历,进行注解域判断,根据状态注解的类型封装为状态对象接口,并存储至状态对象接口总集合中;若还未遍历结束,则继续遍历,若完成遍历,则执行下一步;S4、对状态域对象维护的状态对象接口总集合进行遍历;执行状态对象接口总集合中的状态生成方法进行状态生成,并收集成员变量的变量名作为键、状态对象接口作为值封装为键值对返回给用户,该键值对作为状态恢复方法的入参;状态域对象的状态恢复方法即根据成员变量名从入参中获取对应的状态,以状态为入参调用状态对象接口的状态恢复方法,完成状态恢复。2.根据权利要求1所述的一种基于反射与注解的类实例状态生成与恢复方法,其特征在于,注解状态接口实现的状态注解包括:状态值注解,状态类注解和状态方法注解,用于在类中标记指定的成员变量,其中状态值注解指定的成员变量为基本数据类型,状态类注解标记的成员变量为一个类,状态方法标记的成员变量需要实现注解状态接口。3.根据权利要求2所述的一种基于反射与注解的类实例状态生成与恢复方法,其特征在于,所述状态对象接口包括:单例状态对象接口:对应状态值注解,将类实例中被状态值注解标记的成员变量的反射对象封装成接口,单例状态对象维护的是该成员变量的所属类所对应的反射对象;多例状态对象接口:对应状态类注解,将类实例中被状态类注解标记的成员变量的状态对象集合封装为接口,多例状态对象维护的是被状态类注解标记的成员变量对应的状态对象接口的集合,以键值方式存储;方法状态对象接口:对应状态方法注解,将该类实例中被状态方法注解标记的成员变量的注解状态接口封装成接口,方法状态对象接口维护两个接口,包括由注解状态接口提供的状态生成方法和状态恢复方法。4.根据权利要求3所述的一种基于反射与注解的类实例状态生成与恢复方法,其特征在于,创建单例状态对象接口时,只需要反射对象以及成员变量的变量名;创建多例状态对象接口时,需要该类实...
【专利技术属性】
技术研发人员:陈奇,李可宁,张子健,陈明健,裘英杰,沈李强,王备,
申请(专利权)人:浙江大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。