类转换方法和装置制造方法及图纸

技术编号:15791635 阅读:115 留言:0更新日期:2017-07-09 21:31
本申请公开了一种类转换方法和装置。其中,该方法包括:获取源类对象和目标类对象,其中,源类对象为源类的对象,目标类对象为目标类的对象;获取源类对象和目标类对象之间的映射关系;以及通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换,其中,类转换器中预先封装了类转换方法,映射器中预先封装了类转换规则,类转换方法用于根据类转换规则执行类之间的转换。本申请解决了相关技术中两个类之间转换操作较为复杂的技术问题。

【技术实现步骤摘要】
类转换方法和装置
本申请涉及计算机领域,具体而言,涉及一种类转换方法和装置。
技术介绍
在实际开发过程中,经常需要做两个类之间的转换,这两个类通常属于不同领域,例如,分别属于数据库和应用程序,或是属于不同的系统等。这两个类的特点在于非常相似,例如,大部分字段和属性名称相似,只有小部分字段和属性不一致,且进行转换时需要专门的转换逻辑。对于上述情况,一般都是在代码中手动进行两个类之间的转换,分别将一个对象每个属性值赋给另外一个对象对应的属性值。通常,还需要执行两个类之间的反向转换,反向转换代码和正向转换代码十分类似和重复,只是赋值方向发生变化。如果两个类添加新的属性,需要在正向转换和反向转换中同时添加转化代码,也十分相似。这样代码也无法复用,如果有另外两个类同样需要转换,还需要重复写类似代码。针对相关技术中两个类之间转换操作较为复杂的问题,目前尚未提出有效的解决方案。
技术实现思路
本申请的主要目的在于提供一种类转换方法和装置,以解决相关技术中两个类之间转换操作较为复杂的问题。为了实现上述目的,根据本申请的一个方面,提供了一种类转换方法。该方法包括:获取源类对象和目标类对象,其中,源类对象为源类的对象,目标类对象为目标类的对象;获取源类对象和目标类对象之间的映射关系;以及通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换,其中,类转换器中预先封装了类转换方法,映射器中预先封装了类转换规则,类转换方法用于根据类转换规则执行类之间的转换。进一步地,映射器包括成员映射器和类映射器,其中,成员映射器包括源成员名称和目标成员名称,类映射器包括源类、目标类和成员映射器集合,其中,成员映射器集合中各个元素的类型均为成员映射器的类型。进一步地,通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换包括:遍历成员映射器集合,根据成员映射器集合中各个成员映射器的源成员名称获取各个源成员的值;以及根据映射关系和各个成员映射器的目标成员名称将各个源成员的值对应地赋值给各个成员映射器的目标成员。进一步地,通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换包括:遍历成员映射器集合,根据成员映射器集合中各个成员映射器的源成员名称获取各个源成员的值;分别判断各个成员映射器是否存在成员转换方法;对于判断出存在成员转换方法的成员映射器,调用成员转换方法对成员映射器的源成员的值执行转换,得到转换后的源成员的值,并将转换后的源成员的值赋值给对应的目标成员;以及对于判断出不存在成员转换方法的成员映射器,直接将成员映射器的源成员的值赋值给对应的目标成员。进一步地,映射器还包括集合成员映射器,集合成员映射器包括源中子成员类型和目标中子成员类型,集合成员映射器继承成员映射器,通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换包括:遍历成员映射器集合,并分别对成员映射器集合中各个成员映射器执行如下操作:根据成员映射器的源成员名称获取源成员的值;判断成员映射器是否是集合成员映射器;在判断出成员映射器不是集合成员映射器时,根据映射关系和成员映射器的目标成员名称将源成员的值对应地赋值给成员映射器的目标成员;在判断出成员映射器是集合成员映射器时,遍历源成员的值中各个源成员子项的值,并分别根据集合成员映射器中各个目标中子成员类型创建各个目标成员子项;以及将各个源成员子项的值对应地赋值给各个目标成员子项。进一步地,类映射器还预先封装有类映射器反转方法,其中,类映射器反转方法用于执行类映射器的反转,反转后的类映射器用于执行目标类至源类的转换,通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换包括:调用类映射器反转方法,得到反转后的类映射器;以及通过类转换器根据映射关系和反转后的类映射器将目标类对象转换为源类对象。为了实现上述目的,根据本申请的另一方面,提供了一种类转换装置。该装置包括:第一获取单元,用于获取源类对象和目标类对象,其中,源类对象为源类的对象,目标类对象为目标类的对象;第二获取单元,用于获取源类对象和目标类对象之间的映射关系;以及转换单元,用于通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换,其中,类转换器中预先封装了类转换方法,映射器中预先封装了类转换规则,类转换方法用于根据类转换规则执行类之间的转换。进一步地,映射器包括成员映射器和类映射器,其中,成员映射器包括源成员名称和目标成员名称,类映射器包括源类、目标类和成员映射器集合,其中,成员映射器集合中各个元素的类型均为成员映射器的类型。进一步地,转换单元包括:获取模块,用于遍历成员映射器集合,根据成员映射器集合中各个成员映射器的源成员名称获取各个源成员的值;以及赋值模块,用于根据映射关系和各个成员映射器的目标成员名称将各个源成员的值对应地赋值给各个成员映射器的目标成员。进一步地,类映射器还预先封装有类映射器反转方法,其中,类映射器反转方法用于执行类映射器的反转,反转后的类映射器用于执行目标类至源类的转换,转换单元包括:调用模块,用于调用类映射器反转方法,得到反转后的类映射器;以及转换模块,用于通过类转换器根据映射关系和反转后的类映射器将目标类对象转换为源类对象。本申请通过获取源类对象和目标类对象,其中,源类对象为源类的对象,目标类对象为目标类的对象;获取源类对象和目标类对象之间的映射关系;以及通过类转换器根据映射关系和映射器执行源类对象和目标类对象之间的转换,其中,类转换器中预先封装了类转换方法,映射器中预先封装了类转换规则,类转换方法用于根据类转换规则执行类之间的转换,解决了相关技术中两个类之间转换操作较为复杂的问题,进而达到了方便快速地实现两个类之间转换的效果。附图说明构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的类转换方法的流程图;以及图2是根据本申请实施例的类转换装置的示意图。具体实施方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。为了便于描述,以下对本申请涉及的一些术语和概念进行说明:类:是面向对象的程序开发语言中一种复杂的数据类型,本文档来自技高网
...
类转换方法和装置

【技术保护点】
一种类转换方法,其特征在于,包括:获取源类对象和目标类对象,其中,所述源类对象为源类的对象,所述目标类对象为目标类的对象;获取所述源类对象和所述目标类对象之间的映射关系;以及通过类转换器根据所述映射关系和映射器执行所述源类对象和所述目标类对象之间的转换,其中,所述类转换器中预先封装了类转换方法,所述映射器中预先封装了类转换规则,所述类转换方法用于根据所述类转换规则执行类之间的转换。

【技术特征摘要】
1.一种类转换方法,其特征在于,包括:获取源类对象和目标类对象,其中,所述源类对象为源类的对象,所述目标类对象为目标类的对象;获取所述源类对象和所述目标类对象之间的映射关系;以及通过类转换器根据所述映射关系和映射器执行所述源类对象和所述目标类对象之间的转换,其中,所述类转换器中预先封装了类转换方法,所述映射器中预先封装了类转换规则,所述类转换方法用于根据所述类转换规则执行类之间的转换。2.根据权利要求1所述的方法,其特征在于,所述映射器包括成员映射器和类映射器,其中,所述成员映射器包括源成员名称和目标成员名称,所述类映射器包括所述源类、所述目标类和成员映射器集合,其中,所述成员映射器集合中各个元素的类型均为所述成员映射器的类型。3.根据权利要求2所述的方法,其特征在于,通过类转换器根据所述映射关系和映射器执行所述源类对象和所述目标类对象之间的转换包括:遍历所述成员映射器集合,根据所述成员映射器集合中各个成员映射器的源成员名称获取各个源成员的值;以及根据所述映射关系和所述各个成员映射器的目标成员名称将所述各个源成员的值对应地赋值给所述各个成员映射器的目标成员。4.根据权利要求2所述的方法,其特征在于,通过类转换器根据所述映射关系和映射器执行所述源类对象和所述目标类对象之间的转换包括:遍历所述成员映射器集合,根据所述成员映射器集合中各个成员映射器的源成员名称获取各个源成员的值;分别判断所述各个成员映射器是否存在成员转换方法;对于判断出存在所述成员转换方法的成员映射器,调用所述成员转换方法对所述成员映射器的源成员的值执行转换,得到转换后的源成员的值,并将转换后的源成员的值赋值给对应的目标成员;以及对于判断出不存在所述成员转换方法的成员映射器,直接将所述成员映射器的源成员的值赋值给对应的目标成员。5.根据权利要求2所述的方法,其特征在于,所述映射器还包括集合成员映射器,所述集合成员映射器包括源中子成员类型和目标中子成员类型,所述集合成员映射器继承所述成员映射器,通过类转换器根据所述映射关系和映射器执行所述源类对象和所述目标类对象之间的转换包括:遍历所述成员映射器集合,并分别对所述成员映射器集合中各个成员映射器执行如下操作:根据所述成员映射器的源成员名称获取源成员的值;判断所述成员映射器是否是所述集合成员映射器;在判断出所述成员映射器不是所述集合成员映射器时,根据所述映射关系和所述成员映射器的目标成员名称将所述源成员...

【专利技术属性】
技术研发人员:马燕龙
申请(专利权)人:北京国双科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1