CN112764763B - 一种代码转换方法、系统、设备及计算机可读存储介质 - Google Patents
一种代码转换方法、系统、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112764763B CN112764763B CN202011641204.5A CN202011641204A CN112764763B CN 112764763 B CN112764763 B CN 112764763B CN 202011641204 A CN202011641204 A CN 202011641204A CN 112764763 B CN112764763 B CN 112764763B
- Authority
- CN
- China
- Prior art keywords
- attribute
- conversion
- type attribute
- type
- annotation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 242
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004590 computer program Methods 0.000 claims description 34
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims 2
- 230000000875 corresponding effect Effects 0.000 description 21
- 238000011161 development Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请公开了一种代码转换方法、系统、设备及计算机可读存储介质,获取待转换代码模型及转换后代码模型;确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性;生成第一类属性的第一转换方式;生成表征第二类属性只属于待转换代码的第一注释;生成表征第二类属性只属于转换后代码的第二注释;基于第一转换方式、第一注释及第二注释进行代码转换。本申请中,自动确定待转换代码模型与转换后代码模型中的第一类属性、第二类属性及第三类属性,生成第一转换方式、第一注释及第二注释,且基于第一转换方式、第一注释及第二注释对相应的属性自动进行代码转换,适用性好。
Description
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种代码转换方法、系统、设备及计算机可读存储介质。
背景技术
当前,计算机、软件等的功能实现均需要代码的支持,在编写代码的过程中,可能需要对代码进行转换,比如在POJO(Plain Ordinary Java Object,简单的Java对象)的层与层间存在大量的交互,但各个层的POJO有可能有差异,为了不暴露底层模型的细节,比如不暴露用户密码,每个层都输出不同的POJO模型,因此在调用POJO时,需要把一层的POJO模型转换成另外一层的POJO模型,比如在Controller层调用Service层时,需要把VO(ValueObject,值对象)转换成DTO(Data Transfer Object,数据传输对象),相应的,在Controller层输出给外部时,需要把Service层返回的DTO转换成VO等。在此过程中,可以通过用户手动编写的方式实现代码在不同模型间的转换。
但手动编写映射代码的方法,存在开发效率低、且容易出现映射错误的缺点,特别是在POJO模型里面字段较多的时候,需要对所有的属性逐一进行转换操作,耗时较多且对开发人员较为枯燥,适用性差。
综上所述,如何提供适用性好的代码转换方法是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种代码转换方法,其能在一定程度上解决如何提供适用性好的代码转换方法的技术问题。本申请还提供了一种代码转换系统、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种代码转换方法,包括:
获取待转换代码模型及转换后代码模型;
确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性,只属于所述待转换代码模型的第二类属性,及只属于所述转换后代码模型的第三类属性;
生成所述第一类属性的第一转换方式;
生成表征所述第二类属性只属于所述待转换代码的第一注释;
生成表征所述第二类属性只属于所述转换后代码的第二注释;
基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换。
优选的,所述生成所述第一类属性的第一转换方式,包括:
判断所述第一类属性是否存在嵌套;
若所述第一类属性不存在嵌套,则基于get/set方法生成所述第一类属性的所述第一转换方式。
优选的,所述判断所述第一类属性是否存在嵌套之后,还包括:
若所述第一类属性存在嵌套,则将所述待转换代码模型中的所述第一类属性作为所述待转换代码模型,将所述转换后代码模型中的所述第一类属性作为所述转换后代码模型,返回执行所述确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性的步骤。
优选的,所述判断所述第一类属性是否存在嵌套,包括:
判断所述第一类属性是否为预设的基本数据类型和/或所述基本数据类型对应的包装类型,若是,则判定所述第一类属性不存在嵌套。
优选的,所述基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换,包括:
获取基于所述第一注释及所述第二注释确定的调整信息;
按照所述调整信息对所述第二类属性和/或所述第三类属性进行调整,以使所述第二类属性与所述第三类属性相同;
生成所述第二类属性与所述第三类属性间的第二转换方式;
基于所述第一转换方式和所述第二转换方式进行代码转换。
优选的,所述基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换,包括:
获取所述第二类型属性及所述第三类属性间的第二转换方式;
基于所述第一转换方式及所述第二转换方式进行代码转换;
其中,所述第二转换方式包括用户基于所述第一注释及所述第二注释生成的转换方式。
优选的,所述生成表征所述第二类属性只属于所述转换后代码的第二注释之后,还包括:
显示所述第一注释及所述第二注释。
一种代码转换系统,包括:
第一获取模块,用于获取待转换代码模型及转换后代码模型;
第一确定模块,用于确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性,只属于所述待转换代码模型的第二类属性,及只属于所述转换后代码模型的第三类属性;
第一生成模块,用于生成所述第一类属性的第一转换方式;
第二生成模块,用于生成表征所述第二类属性只属于所述待转换代码的第一注释;
第三生成模块,用于生成表征所述第二类属性只属于所述转换后代码的第二注释;
第一转换模块,用于基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换。
一种代码转换设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述代码转换方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述代码转换方法的步骤。
本申请提供的一种代码转换方法,获取待转换代码模型及转换后代码模型;确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性;生成第一类属性的第一转换方式;生成表征第二类属性只属于待转换代码的第一注释;生成表征第二类属性只属于转换后代码的第二注释;基于第一转换方式、第一注释及第二注释进行代码转换。本申请中,可以自动确定待转换代码模型与转换后代码模型中的第一类属性、第二类属性及第三类属性,并且可以生成第一转换方式、第一注释及第二注释,使得后续可以基于第一转换方式、第一注释及第二注释对相应的属性自动进行代码转换,效率高且不易出错,适用性好。本申请提供的一种代码转换系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种代码转换方法的第一流程图;
图2为本申请实施例提供的一种代码转换方法的第二流程图;
图3为本申请实施例提供的一种代码转换系统的结构示意图;
图4为本申请实施例提供的一种代码转换设备的结构示意图;
图5为本申请实施例提供的一种代码转换设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,图1为本申请实施例提供的一种代码转换方法的第一流程图。
本申请实施例提供的一种代码转换方法,可以包括以下步骤:
步骤S101:获取待转换代码模型及转换后代码模型。
实际应用中,因为代码模型会影响代码的转换过程,所以可以先获取待转换代码模型及转换后代码模型,以便后续对待转换代码模型及转换后代码模型进行分析来完成代码转换。
应当指出,待转换代码模型也即转换前的代码模型,转换后代码模型也即转换后的代码模型,待转换代码模型及转换后代码模型的内容及类型均可以根据实际需要确定。且具体应用场景中,本申请提供的代码转换方法可以通过集成开发环境(IDE,IntegratedDevelopment Environment)中的相应插件来实现,具体的,可以先书写代码转换的方法签名,再调用集成开发环境中的插件来运行本申请提供的代码转换方法等。
步骤S102:确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性。
实际应用中,因为在代码转换过程中,需要对代码中的相应属性进行转换,而待转换代码模型及转换后代码模型中的属性信息可能不同,由此使得代码转换过程不可控,但待转换代码模型及转换后代码模型中的属性总体而言存在相同属性、独属于待转换代码模型的属性及独属于转换后代码模型的属性,所以在获取待转换代码模型及转换后代码模型之后,可以确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性,以便后续根据第一类属性、第二类属性及第三类属性进行代码转换。在此过程中,如果待转换代码模型及转换后代码模型中属性的名称及类型均一致,则可以认为该属性为第一类属性等。
步骤S103:生成第一类属性的第一转换方式。
实际应用中,因为第一类属性为待转换代码模型及转换后代码模型中相同的属性,所以第一类属性在待转换代码模型及转换后代码模型中一一对应,此时,可以直接生成第一类属性的第一转换方式,以借助第一转换方式直接将待转换代码模型中的第一类属性的相关信息转换到转换后代码模型中。
步骤S104:生成表征第二类属性只属于待转换代码的第一注释。
步骤S105:生成表征第二类属性只属于转换后代码的第二注释。
实际应用中,因为第二类属性及第三类属性均只属于单一的代码模型,所以另一个代码模型中不存在与第二类属性或第三类属性对应的属性,这样便无法将待转换代码模型中的第二类属性转换至转换后代码模型中,且无法依据待转换代码模型中的属性信息对转换后代码模型中的第三类属性进行填充,由此使得代码转换失败,为了避免此种情况,可以生成表征第二类属性只属于待转换代码的第一注释,生成表征第二类属性只属于转换后代码的第二注释,以便借助第一注释及第二注释完成对第二类属性和第三类属性的代码转换。
步骤S106:基于第一转换方式、第一注释及第二注释进行代码转换。
实际应用中,在生成第一转换方式、第一注释及第二注释之后,便可以基于第一转换方式、第一注释及第二注释进行代码转换。
本申请提供的一种代码转换方法,获取待转换代码模型及转换后代码模型;确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性;生成第一类属性的第一转换方式;生成表征第二类属性只属于待转换代码的第一注释;生成表征第二类属性只属于转换后代码的第二注释;基于第一转换方式、第一注释及第二注释进行代码转换。本申请中,可以自动确定待转换代码模型与转换后代码模型中的第一类属性、第二类属性及第三类属性,并且可以生成第一转换方式、第一注释及第二注释,使得后续可以基于第一转换方式、第一注释及第二注释对相应的属性自动进行代码转换,效率高且不易出错,适用性好。
本申请实施例提供的一种代码转换方法中,在生成第一类属性的第一转换方式的过程中,如果第一类属性存在嵌套的话,第一类属性中具体的属性信息在待转换代码模型及转换后代码模型中可能不同,如果此时直接对第一类属性进行转换的后,会存在代码转换失败的情况,为了避免此种情况,可以先判断第一类属性是否存在嵌套;若第一类属性不存在嵌套,则基于get/set方法生成第一类属性的第一转换方式;相应的,若第一类属性存在嵌套,则将待转换代码模型中的第一类属性作为待转换代码模型,将转换后代码模型中的第一类属性作为转换后代码模型,返回执行确定待转换代码模型与转换后代码模型中相同的第一类属性的步骤,也即可以按照本申请提供的代码转换方法进一步对第一类属性中的属性信息进行分析并根据分析结果进行代码转换。
实际应用中,在判断第一类属性是否存在嵌套的过程中,可以判断第一类属性是否为预设的基本数据类型和/或基本数据类型对应的包装类型,若是,则可以直接判定第一类属性不存在嵌套。以代码模型为POJO模型为例,若第一类属性为Java基本数据类型,比如int、long、double、String等,或者为Java基本数据类型对应的包装类型,比如Integer、Long、Double等,则可以直接判定第一类属性不存在嵌套。
请参阅图2,图2为本申请实施例提供的一种代码转换方法的第二流程图。
本申请实施例提供的一种代码转换方法,可以包括以下步骤:
步骤S201:获取待转换代码模型及转换后代码模型。
步骤S202:确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性。
步骤S203:生成第一类属性的第一转换方式。
步骤S204:生成表征第二类属性只属于待转换代码的第一注释。
步骤S205:生成表征第二类属性只属于转换后代码的第二注释。
步骤S206:获取基于第一注释及第二注释确定的调整信息。
步骤S207:按照调整信息对第二类属性和/或第三类属性进行调整,以使第二类属性与第三类属性相同。
实际应用中,在进行代码转换的过程中,理论上,待转换代码模型中的属性信息会被转换至转换后代码模型中,也即待转换代码模型及转换后代码模型中的属性信息应该相同,所以理论上第二类属性及第三类属性应该是表征相同属性信息的属性,但可能因为编写失误等导致出现第二类属性与第三类属性不相同的情况,比如第二类属性的名称与第三类属性的名称相同,但第二类属性的类型与第三类属性的类型不相同等,这时,只需对第二类属性及第三类属性进行调整便可以实现正常的代码转换。所以在基于第一转换方式、第一注释及第二注释进行代码转换的过程中,可以获取基于第一注释及第二注释确定的调整信息,并按照调整信息对第二类属性和/或第三类属性进行调整,以使第二类属性与第三类属性相同。
具体应用场景中,调整信息可以为用户基于第一注释及第二注释生成的相应调整信息等;当然,也可以借助集成开发环境自动基于第一注释及第二注释生成相应的调整信息,比如先确定出相似的第二类属性及第三类属性,再根据第二类属性及第三类属性中的不同部分确定相应的调整信息等,本申请在此不做具体限定。
步骤S208:生成第二类属性与第三类属性间的第二转换方式。
步骤S209:基于第一转换方式和第二转换方式进行代码转换。
实际应用中,在按照调整信息对第二类属性和/或第三类属性进行调整,以使第二类属性与第三类属性相同之后,便可以生成第二类属性与第三类属性间的第二转换方式,基于第一转换方式和第二转换方式进行代码转换。
具体应用场景中,在基于第一转换方式、第一注释及第二注释进行代码转换的过程中,还可以直接获取第二类型属性及第三类属性间的第二转换方式;基于第一转换方式及第二转换方式进行代码转换;其中,第二转换方式包括用户基于第一注释及第二注释生成的转换方式。也即可以直接在用户参与的情况下完成代码转换,使得代码转换符合用户需求,在此过程中,为了便于用户查看第一注释及第二注释,在生成表征第二类属性只属于转换后代码的第二注释之后,还可以显示第一注释及第二注释。
为了便于理解本申请提供的代码转换方法,现结合POJO中DTO与VO间的代码转换过程对本申请提供的方法进行描述,该过程可以包括以下步骤:
开发人员书写代码转换方法的方法签名,包含待转换代码模型(也即参数)和转换后代码模型(也即返回值),但不需要具体的转换代码,方法签名可以为:public staticUserDTO toUserDTO(UserVO userVO){};
开发人员通过快捷键调用集成开发环境(IDE,Integrated DevelopmentEnvironment)的“转换代码生成”的插件;
基于插件分析方法的参数和返回值,推断出参数和返回值对应的POJO模型,如UserDTO、UserVO;
基于插件分析参数POJO模型,如UserVO,获取参数POJO模型中所有的属性名称和属性类型,放入参数属性数组,记为ArrayParam;
基于插件分析返回值POJO模型,如UserDTO,获取返回值POJO模型中所有的属性名称和属性类型,放入返回值属性数组,记为ArrayReturn;
对比参数POJO模型的属性数组ArrayParam和返回值POJO模型的属性数组ArrayReturn;首先,遍历参数POJO模型的所有属性数组(ArrayParam),对于其中的属性记为PropertyInParam,在返回值POJO模型的属性数组(ArrayReturn)中,查询和PropertyInParam名称与类型一致的属性,记为PropertyInReturn,如果可以找到PropertyInReturn,表示参数POJO模型和返回值POJO模型存在相同名称和相同类型的第一类属性,需要进行转换,将PropertyInReturn放入数组ArrayBothParamReturn,如果PropertyInReturn不存在,表示此属性是只存在于参数POJO模型中的第二类属性,将PropertyInParam放入数组ArrayOnlyInParam;接着遍历返回值POJO模型的所有属性(ArrayReturn),对于其中的属性记为PropertyInReturn,在参数POJO模型数组ArrayParam中查找和PropertyInReturn相同名称相同类型的属性,记为PropertyInParam,如果可以找到PropertyParam,表示此属性在参数和返回值POJO中都存在,跳过此属性继续执行,如果PropertyInParam不存在,表示此属性是只存在于返回值POJO中的第三类属性,放入ArrayOnlyInReturn;
根据ArrayBothParamReturn生成第一转换方式,比如如果属性是Java基本数据类型(如int、long、double、String等)以及对应的包装类型(如Integer、Long、Double等),则基于get/set方法生成第一转换方式,如果属性是POJO,即POJO相互嵌套,执行上述逻辑进行递归操作,如果属性是数组/集合,生成数组/集合转换的方法,执行上述逻辑进行递归操作,以完成相应的代码转换;
遍历ArrayOnlyInParam,生成表征这些属性只在参数中存在的第一注释;
遍历ArrayOnlyInReturn,生成表征这些属性只在返回值中存在的第二注释;
用户根据第一注释和第二注释进行手动调整,如通过类型转换将类型不一致的属性转换为类型一致的属性等,根据调整结果完成代码转换。
请参阅图3,图3为本申请实施例提供的一种代码转换系统的结构示意图。
本申请实施例提供的一种代码转换系统,可以包括:
第一获取模块101,用于获取待转换代码模型及转换后代码模型;
第一确定模块102,用于确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性;
第一生成模块103,用于生成第一类属性的第一转换方式;
第二生成模块104,用于生成表征第二类属性只属于待转换代码的第一注释;
第三生成模块105,用于生成表征第二类属性只属于转换后代码的第二注释;
第一转换模块106,用于基于第一转换方式、第一注释及第二注释进行代码转换。
本申请实施例提供的一种代码转换系统,第一生成模块可以包括:
第一判断单元,用于判断第一类属性是否存在嵌套;若第一类属性不存在嵌套,则基于get/set方法生成第一类属性的第一转换方式。
本申请实施例提供的一种代码转换系统,第一判断单元还可以用于:
若第一类属性存在嵌套,则将待转换代码模型中的第一类属性作为待转换代码模型,将转换后代码模型中的第一类属性作为转换后代码模型,返回执行确定待转换代码模型与转换后代码模型中相同的第一类属性的步骤。
本申请实施例提供的一种代码转换系统,第一判断单元可以具体用以:
判断第一类属性是否为预设的基本数据类型和/或基本数据类型对应的包装类型,若是,则判定第一类属性不存在嵌套。
本申请实施例提供的一种代码转换系统,第一转换模块可以包括:
第一获取单元,用于获取基于第一注释及第二注释确定的调整信息;
第一调整单元,用于按照调整信息对第二类属性和/或第三类属性进行调整,以使第二类属性与第三类属性相同;
第一生成单元,用于生成第二类属性与第三类属性间的第二转换方式;
第一转换单元,用于基于第一转换方式和第二转换方式进行代码转换。
本申请实施例提供的一种代码转换系统,第一转换模块可以包括:
第二获取单元,用于获取第二类型属性及第三类属性间的第二转换方式;
第二转换单元,用于基于第一转换方式及第二转换方式进行代码转换;
其中,第二转换方式包括用户基于第一注释及第二注释生成的转换方式。
本申请实施例提供的一种代码转换系统,还可以包括:
第一显示模块,用于第三生成模块生成表征第二类属性只属于转换后代码的第二注释之后,显示第一注释及第二注释。
本申请还提供了一种代码转换设备及计算机可读存储介质,其均具有本申请实施例提供的一种代码转换方法具有的对应效果。请参阅图4,图4为本申请实施例提供的一种代码转换设备的结构示意图。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:
获取待转换代码模型及转换后代码模型;
确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性;
生成第一类属性的第一转换方式;
生成表征第二类属性只属于待转换代码的第一注释;
生成表征第二类属性只属于转换后代码的第二注释;
基于第一转换方式、第一注释及第二注释进行代码转换。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断第一类属性是否存在嵌套;若第一类属性不存在嵌套,则基于get/set方法生成第一类属性的第一转换方式。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断第一类属性是否存在嵌套之后,若第一类属性存在嵌套,则将待转换代码模型中的第一类属性作为待转换代码模型,将转换后代码模型中的第一类属性作为转换后代码模型,返回执行确定待转换代码模型与转换后代码模型中相同的第一类属性的步骤。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断第一类属性是否为预设的基本数据类型和/或基本数据类型对应的包装类型,若是,则判定第一类属性不存在嵌套。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:获取基于第一注释及第二注释确定的调整信息;按照调整信息对第二类属性和/或第三类属性进行调整,以使第二类属性与第三类属性相同;生成第二类属性与第三类属性间的第二转换方式;基于第一转换方式和第二转换方式进行代码转换。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:获取第二类型属性及第三类属性间的第二转换方式;基于第一转换方式及第二转换方式进行代码转换;其中,第二转换方式包括用户基于第一注释及第二注释生成的转换方式。
本申请实施例提供的一种代码转换设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:生成表征第二类属性只属于转换后代码的第二注释之后,显示第一注释及第二注释。
请参阅图5,本申请实施例提供的另一种代码转换设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现代码转换设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
获取待转换代码模型及转换后代码模型;
确定待转换代码模型与转换后代码模型中相同的第一类属性,只属于待转换代码模型的第二类属性,及只属于转换后代码模型的第三类属性;
生成第一类属性的第一转换方式;
生成表征第二类属性只属于待转换代码的第一注释;
生成表征第二类属性只属于转换后代码的第二注释;
基于第一转换方式、第一注释及第二注释进行代码转换。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断第一类属性是否存在嵌套;若第一类属性不存在嵌套,则基于get/set方法生成第一类属性的第一转换方式。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断第一类属性是否存在嵌套之后,若第一类属性存在嵌套,则将待转换代码模型中的第一类属性作为待转换代码模型,将转换后代码模型中的第一类属性作为转换后代码模型,返回执行确定待转换代码模型与转换后代码模型中相同的第一类属性的步骤。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断第一类属性是否为预设的基本数据类型和/或基本数据类型对应的包装类型,若是,则判定第一类属性不存在嵌套。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:获取基于第一注释及第二注释确定的调整信息;按照调整信息对第二类属性和/或第三类属性进行调整,以使第二类属性与第三类属性相同;生成第二类属性与第三类属性间的第二转换方式;基于第一转换方式和第二转换方式进行代码转换。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:获取第二类型属性及第三类属性间的第二转换方式;基于第一转换方式及第二转换方式进行代码转换;其中,第二转换方式包括用户基于第一注释及第二注释生成的转换方式。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:生成表征第二类属性只属于转换后代码的第二注释之后,显示第一注释及第二注释。
本申请所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请实施例提供的代码转换系统、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的代码转换方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (5)
1.一种代码转换方法,其特征在于,包括:
获取待转换代码模型及转换后代码模型;
确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性,只属于所述待转换代码模型的第二类属性,及只属于所述转换后代码模型的第三类属性;其中,所述确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性,包括:若待转换代码模型及转换后代码模型中属性的名称及类型均一致,则确定该属性为第一类属性;
生成所述第一类属性的第一转换方式;其中,所述生成所述第一类属性的第一转换方式,包括:判断所述第一类属性是否存在嵌套;若第一类属性不存在嵌套,则基于get/set方法生成所述第一类属性的第一转换方式;若所述第一类属性存在嵌套,则将所述待转换代码模型中的第一类属性作为待转换代码模型,将转换后代码模型中的第一类属性作为转换后代码模型之后,跳转至所述确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性的步骤;其中,所述判断所述第一类属性是否存在嵌套,包括:判断所述第一类属性是否为预设的基本数据类型和/或所述基本数据类型对应的包装类型,若是,则判定所述第一类属性不存在嵌套;
生成表征所述第二类属性只属于所述待转换代码的第一注释;
生成表征所述第二类属性只属于所述转换后代码的第二注释;
基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换;其中,若所述第二类属性和所述第三类属性的类型不相同,所述基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换,包括:获取基于所述第一注释及所述第二注释确定的调整信息;按照所述调整信息对所述第二类属性和/或所述第三类属性进行调整,以使所述第二类属性与所述第三类属性相同;生成所述第二类属性与所述第三类属性间的第二转换方式;基于所述第一转换方式和所述第二转换方式进行代码转换;其中,若所述第二类属性和所述第三类属性的类型相同,所述基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换,包括:获取所述第二类属性及所述第三类属性间的第二转换方式;基于所述第一转换方式及所述第二转换方式进行代码转换;其中,所述第二转换方式包括用户基于所述第一注释及所述第二注释生成的转换方式。
2.根据权利要求1所述的方法,其特征在于,所述生成表征所述第二类属性只属于所述转换后代码的第二注释之后,还包括:
显示所述第一注释及所述第二注释。
3.一种代码转换系统,其特征在于,包括:
第一获取模块,用于获取待转换代码模型及转换后代码模型;
第一确定模块,用于确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性,只属于所述待转换代码模型的第二类属性,及只属于所述转换后代码模型的第三类属性;其中,所述确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性,包括:若待转换代码模型及转换后代码模型中属性的名称及类型均一致,则确定该属性为第一类属性;
第一生成模块,用于生成所述第一类属性的第一转换方式;其中,所述生成所述第一类属性的第一转换方式,包括:判断所述第一类属性是否存在嵌套;若第一类属性不存在嵌套,则基于get/set方法生成所述第一类属性的第一转换方式;若所述第一类属性存在嵌套,则将所述待转换代码模型中的第一类属性作为待转换代码模型,将转换后代码模型中的第一类属性作为转换后代码模型之后,跳转至所述确定所述待转换代码模型与所述转换后代码模型中相同的第一类属性的步骤;其中,所述判断所述第一类属性是否存在嵌套,包括:判断所述第一类属性是否为预设的基本数据类型和/或所述基本数据类型对应的包装类型,若是,则判定所述第一类属性不存在嵌套;
第二生成模块,用于生成表征所述第二类属性只属于所述待转换代码的第一注释;
第三生成模块,用于生成表征所述第二类属性只属于所述转换后代码的第二注释;
第一转换模块,用于基于所述第一转换方式、所述第一注释及所述第二注释进行代码转换;其中,若所述第二类属性和所述第三类属性的类型不相同,所述第一转换模块具体用于:获取基于所述第一注释及所述第二注释确定的调整信息;按照所述调整信息对所述第二类属性和/或所述第三类属性进行调整,以使所述第二类属性与所述第三类属性相同;生成所述第二类属性与所述第三类属性间的第二转换方式;基于所述第一转换方式和所述第二转换方式进行代码转换;其中,若所述第二类属性和所述第三类属性的类型相同,所述第一转换模块具体用于:获取所述第二类属性及所述第三类属性间的第二转换方式;基于所述第一转换方式及所述第二转换方式进行代码转换;其中,所述第二转换方式包括用户基于所述第一注释及所述第二注释生成的转换方式。
4.一种代码转换设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至2任一项所述代码转换方法的步骤。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至2任一项所述代码转换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011641204.5A CN112764763B (zh) | 2020-12-31 | 2020-12-31 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011641204.5A CN112764763B (zh) | 2020-12-31 | 2020-12-31 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764763A CN112764763A (zh) | 2021-05-07 |
CN112764763B true CN112764763B (zh) | 2024-01-26 |
Family
ID=75698461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011641204.5A Active CN112764763B (zh) | 2020-12-31 | 2020-12-31 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764763B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961238A (zh) * | 2021-10-27 | 2022-01-21 | 国网信息通信产业集团有限公司 | 对象转换方法、装置及电子设备和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222004A (zh) * | 2011-07-01 | 2011-10-19 | 福建富士通信息软件有限公司 | 交换机专用语言转换为c语言的方法 |
CN105279287A (zh) * | 2015-12-02 | 2016-01-27 | 中国电子科技集团公司第十五研究所 | 一种物资编目检索方法 |
CN107148615A (zh) * | 2014-11-27 | 2017-09-08 | 乐金信世股份有限公司 | 计算机可执行的模型逆向工程方法及装置 |
CN107368346A (zh) * | 2017-07-06 | 2017-11-21 | 万惠投资管理有限公司 | 一种基于元数据和脚本引擎的代码生成方法及装置 |
CN109388406A (zh) * | 2018-09-14 | 2019-02-26 | 浙江口碑网络技术有限公司 | 转换java代码的方法及装置、存储介质、电子装置 |
CN109710218A (zh) * | 2018-11-26 | 2019-05-03 | 福建天泉教育科技有限公司 | 一种对象自动转换方法及终端 |
CN109918073A (zh) * | 2019-01-29 | 2019-06-21 | 维沃移动通信有限公司 | 一种源码文件的生成方法、装置以及终端 |
CN111078230A (zh) * | 2019-12-06 | 2020-04-28 | 中国建设银行股份有限公司 | 一种代码生成方法和装置 |
CN111240681A (zh) * | 2019-12-30 | 2020-06-05 | 瑞庭网络技术(上海)有限公司 | 一种不同编程语言的转换方法及装置 |
CN111475150A (zh) * | 2020-04-07 | 2020-07-31 | 广州致远电子有限公司 | 一种跨语言绑定方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11074055B2 (en) * | 2019-06-14 | 2021-07-27 | International Business Machines Corporation | Identification of components used in software binaries through approximate concrete execution |
-
2020
- 2020-12-31 CN CN202011641204.5A patent/CN112764763B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222004A (zh) * | 2011-07-01 | 2011-10-19 | 福建富士通信息软件有限公司 | 交换机专用语言转换为c语言的方法 |
CN107148615A (zh) * | 2014-11-27 | 2017-09-08 | 乐金信世股份有限公司 | 计算机可执行的模型逆向工程方法及装置 |
CN105279287A (zh) * | 2015-12-02 | 2016-01-27 | 中国电子科技集团公司第十五研究所 | 一种物资编目检索方法 |
CN107368346A (zh) * | 2017-07-06 | 2017-11-21 | 万惠投资管理有限公司 | 一种基于元数据和脚本引擎的代码生成方法及装置 |
CN109388406A (zh) * | 2018-09-14 | 2019-02-26 | 浙江口碑网络技术有限公司 | 转换java代码的方法及装置、存储介质、电子装置 |
CN109710218A (zh) * | 2018-11-26 | 2019-05-03 | 福建天泉教育科技有限公司 | 一种对象自动转换方法及终端 |
CN109918073A (zh) * | 2019-01-29 | 2019-06-21 | 维沃移动通信有限公司 | 一种源码文件的生成方法、装置以及终端 |
CN111078230A (zh) * | 2019-12-06 | 2020-04-28 | 中国建设银行股份有限公司 | 一种代码生成方法和装置 |
CN111240681A (zh) * | 2019-12-30 | 2020-06-05 | 瑞庭网络技术(上海)有限公司 | 一种不同编程语言的转换方法及装置 |
CN111475150A (zh) * | 2020-04-07 | 2020-07-31 | 广州致远电子有限公司 | 一种跨语言绑定方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
J2EE架构中各层数据表示和传输的研究;王林强;迟洪钦;;计算机时代(第07期);54-55 * |
基于Modelica的SysML状态机模型仿真方法;冯豪;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-1387 * |
基于信息剪裁的HTML2WML智能转换算法;马黎;;微型电脑应用(第01期);1-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN112764763A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7174533B2 (en) | Method, system, and program for translating a class schema in a source language to a target language | |
US20210279115A1 (en) | Automated api code generation | |
US9244709B2 (en) | Automatic recognition of web application | |
US10067957B1 (en) | Process for serializing and deserializing data described by a schema | |
KR101569765B1 (ko) | 중간 포맷을 이용한 swf와 html의 크로스-컴파일링 | |
CN107609302B (zh) | 一种产品工艺结构生成方法及系统 | |
WO2023130933A1 (zh) | 模型处理方法、代码获得方法、装置以及电子设备 | |
US8413109B2 (en) | Systems and methods for metamodel transformation | |
US11650875B2 (en) | Abnormal inode dynamic repair method and system, and related component | |
US8914482B2 (en) | Translation of technology-agnostic management commands into multiple management protocols | |
CN112764763B (zh) | 一种代码转换方法、系统、设备及计算机可读存储介质 | |
JP2012529711A (ja) | ソフトウェア拡張子解析方法及びシステム | |
CN114860689A (zh) | 一种在异构数据库之间迁移数据对象的方法及系统 | |
CN112052157B (zh) | 测试报文的构造方法、装置及系统 | |
US20080059506A1 (en) | Method, system and schema for building a hierarchical model schema definition from a flat model definition | |
CN117632132A (zh) | 代码生成方法、装置、电子设备及计算机可读存储介质 | |
US20140359258A1 (en) | Declarative Configuration Elements | |
CN107506474B (zh) | 基于对象映射的数据库操作方法及装置 | |
CN116028062A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN117149153A (zh) | 业务数据模型的生成方法、装置、计算机设备以及介质 | |
CN101882072A (zh) | 一种菜单的定制方法、系统及服务器 | |
CN112559455A (zh) | 基于语义网络技术的ifc数据管理系统和方法 | |
JP6497087B2 (ja) | 情報処理装置及び情報処理プログラム | |
CN114036781B (zh) | 数据处理方法、数据展示方法、装置以及电子设备 | |
CN113918664B (zh) | 一种数据处理方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |