CN111796806B - 生成对象的方法、装置、电子设备及可读存储介质 - Google Patents
生成对象的方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN111796806B CN111796806B CN201910912637.0A CN201910912637A CN111796806B CN 111796806 B CN111796806 B CN 111796806B CN 201910912637 A CN201910912637 A CN 201910912637A CN 111796806 B CN111796806 B CN 111796806B
- Authority
- CN
- China
- Prior art keywords
- copied
- information
- attribute
- type information
- generating
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种生成对象的方法、装置、电子设备及可读存储介质。该方法包括:确定被复制对象的类型信息;根据类型信息,获取被复制对象的目标属性信息;在基于被复制对象生成待复制对象时,基于类型信息和目标属性信息生成待复制对象。在本申请实施例中,可以确定被复制对象的类型信息以及被复制对象的目标属性信息,这样在基于被复制对象生成多个待复制对象时,可以直接通过确定的目标属性信息生成多个待复制对象,并不每次都需要获取被复制对象的类型信息和属性信息,然后根据类型信息和属性信每次自行编写每个待复制对象的生成函数,提升了工作效率,并且可以有效地避免了因人工编写生成函数工作量大,容易出错的问题。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本发明涉及一种生成对象的方法、装置、电子设备及可读存储介质。
背景技术
在实际生活中,在应用程序中的某一场景中通常存在大量相同的对像,因此,在制作该相同的对象时,通常是制作一个初始对象,然后基于该初始对象进行复制,进而得到大量相同的对像。例如,在某一游戏场景中,地上可能散落100个元宝,此时可以提供一个初始元宝,基于该初始元宝进行复制进而得到100个元宝。
现有技术中,在通过复制生成大量相同的对象时,通常由开发者自行编写每个类的复制函数,该复制函数用于从一个现有对象复制出新的对象,在每次复制对象时均调用该复制函数来完成对象复制。但是,现有技术中的这种方式需要人工编写复制函数并维护每个类的复制函数,存在工作量大,容易出错的问题。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一。
第一方面,提供了一种生成对象的法,该方法包括:
确定被复制对象的类型信息;
根据类型信息,获取被复制对象的目标属性信息;
在基于被复制对象生成待复制对象时,基于类型信息和目标属性信息生成待复制对象。
第一方面可选的实施例中,根据类型信息,获取被复制对象的目标属性信息,包括:
根据类型信息获取被复制对象的各属性,以及各属性的当前属性值;
将获取到的属性中当前属性值不等于预设值的属性确定为目标属性;
将各目标属性,以及各目标属性的当前属性值作为被复制对象的目标属性信息。
第一方面可选的实施例中,类型信息用于获取构造函数,构造函数用于生成待复制对象,被复制对象的各属性对应于生成待复制对象时待复制对象的各成员变量。
第一方面可选的实施例中,该方法还包括:
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序;
基于类型信息和目标属性信息生成待复制对象,包括:
基于用于生成待复制对象的生成程序生成待复制对象。
第一方面可选的实施例中,该方法还包括:
按照自定义数据格式对类型信息和目标属性信息进行保存,得到保存数据;
基于类型信息和目标属性信息生成待复制对象,包括:
根据自定义数据格式对应的数据规范对保存数据进行解析,得到类型信息和目标属性信息;
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序,并基于生成程序生成待复制对象。
第一方面可选的实施例中,通过下列中的任一种方式获取确定待复制对象的类型信息:
通过编程语言提供的反射机制确定被复制对象的类型信息;
通过声明被复制对象时所使用的类型描述信息,得到被复制对象的类型信息,类型描述信息中包括被复制对象的类型信息;
通过访问被复制对象的生成代码中类型信息所对应的字段,得到被复制对象的类型信息。
第一方面可选的实施例中,根据类型信息获取待复制对象的各属性,包括:
基于类型信息,并通过编程语言提供的反射机制获取被复制对象的各属性;或,
基于类型信息,通过声明被复制对象时所使用的类型描述信息获取被复制对象的各属性,类型描述信息中包括被复制对象对应于类型信息时的各属性信息。
第二方面,提供了一种生成对象的装置,该装置包括:
类型信息确定模块,用于确定被复制对象的类型信息;
属性信息获取模块,用于根据类型信息,获取被复制对象的目标属性信息;
待复制对象生成模块,用于在基于被复制对象生成待复制对象时,基于类型信息和目标属性信息生成待复制对象。
第二方面可选的实施例中,属性信息获取模块在根据类型信息,获取被复制对象的目标属性信息时,具体用于:
根据类型信息获取被复制对象的各属性,以及各属性的当前属性值;
将获取到的属性中当前属性值不等于预设值的属性确定为目标属性;
将各目标属性,以及各目标属性的当前属性值作为被复制对象的目标属性信息。
第二方面可选的实施例中,类型信息用于获取构造函数,构造函数用于生成待复制对象,被复制对象的各属性对应于生成待复制对象时待复制对象的各成员变量。
第二方面可选的实施例中,该装置还包括程序生成模块,具体用于:
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序;
待复制对象生成模块在基于类型信息和目标属性信息生成待复制对象时,具体用于:
基于用于生成待复制对象的生成程序生成待复制对象。
第二方面可选的实施例中,该装置还包括目标属性信息保存模块,具体用于:
按照自定义数据格式对类型信息和目标属性信息进行保存,得到保存数据;
待复制对象生成模块在基于类型信息和目标属性信息生成待复制对象时,具体用于:
根据自定义数据格式对应的数据规范对保存数据进行解析,得到类型信息和目标属性信息;
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序,并基于生成程序生成待复制对象。
第二方面可选的实施例中,通过下列中的任一种方式获取确定待复制对象的类型信息:
通过编程语言提供的反射机制确定被复制对象的类型信息;
通过声明被复制对象时所使用的类型描述信息,得到被复制对象的类型信息,类型描述信息中包括被复制对象的类型信息;
通过访问被复制对象的生成代码中类型信息所对应的字段,得到被复制对象的类型信息。
第二方面可选的实施例中,属性信息获取模块根据类型信息获取待复制对象的各属性时,具体用于:
基于类型信息,并通过编程语言提供的反射机制获取被复制对象的各属性;或,
基于类型信息,通过声明被复制对象时所使用的类型描述信息获取被复制对象的各属性,类型描述信息中包括被复制对象对应于类型信息时的各属性信息。
第三方面,提供了一种电子设备,该电子设备包括:
处理器;以及存储器,该储器配置用于存储机器可读指令,该指令在由该处理器执行时,使得该处理器执行第一方面中的任一项方法。
第四方面,提供了一种计算机可读存储介质,存储有计算机程序,计算机存储介质用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机可以执行第一方面中的任一项方法。
本申请实施例提供的技术方案带来的有益效果是:
在本申请实施例中,可以确定被复制对象的类型信息以及被复制对象的目标属性信息,这样在基于被复制对象生成多个待复制对象时,可以直接通过确定的目标属性信息生成多个待复制对象,并不需要像现有技术中,每次都需要获取被复制对象的类型信息和属性信息,然后根据类型信息和属性信每次自行编写每个待复制对象的生成函数,提升了工作效率,并且可以有效地避免了因人工编写生成函数工作量大,容易出错的问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种生成对象的方法的流程示意图;
图2为本申请实施例提供的一种生成对象的装置的结构示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在实际生活中,在应用程序中的某一场景中通常存在大量相同的对像,因此,在制作该相同的对象时,通常是制作一个初始对象即被复制对象,然后基于该初始对象进行复制,进而得到大量相同的对像,目前通常采用下列几种方式进行对象复制。
方式1、遍历被复制对象中的每个属性,对遍历到的每个属性进均行复制。但是,采用该方式复制生成待复制对象时,需要访问编程语言或者编程系统本身的一些类型信息,性能不高;并且由于需要对遍历到的每个属性进均行复制,其中可能会复制到一些不用复制的属性,此时不但浪费了复制资源,还增加对象复制的复杂度。
方式2、由开发者自行编写每个类的复制函数,该复制函数用于从一个现有对象复制出新的对象,在每次复制对象时均调用该复制函数来完成对象复制。但是,这种方式需要人工编写复制函数并维护每个类的复制函数,存在工作量大,容易出错的问题。
方式3、借助编程语言或者开发者所用的编程系统提供的序列化和反序列化机制,先将对象序列化为可传输或存储的数据,再使用反序列化机制从该数据重新创建出相同的对象,以达到复制对象的效果。
但是,对应于游戏常见的场景结构的复制时,开发者通常无法直接将对象序列化,场景结构无法直接进行完整复制,特别是针对于场景结构中依赖的一些资源,依赖的临时对象,指向场景结构外部的对象,此时若想复制这些内容,一种方式需要对序列化、反序列化机制进行一定的定制、封装,使之适用于游戏过程中场景对象的复制需求。而实现定制、封装的过程后仍需要基于方式1中的方式完成对象的复制,也就会存在方式1中同样的问题;而另一种方式需要在复制过程中根据序列化后的数据查询到对应在内存中的程序信息,如构造函数,但是效率比较低。
基于此,本申请提供一种生成对象的方法、装置、电子设备及可读存储介质,旨在解决上述技术缺陷的部分或全部。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请实施例提供了一种生成对象的方法法,如图1所示,该方法包括:
步骤S101,确定被复制对象的类型信息。
在实际应用中,若需要对某一个对象进行复制,以得到多个与该对象相同的对象,此时该某一个对象即为被复制对象。而具体将哪一种对象作为被复制对象可以根据实际需求设置,本申请实施例不做限定。
相应的,在确定需要对哪一个对象进行复制(即确定被复制对象)后,可以获取被复制对象的类型信息,该类型信息用于表征被复制对象的类型。其中,确定被复制对象的类型信息的方式可以根据实际需求预先设置,本申请实施例不做限定。
作为可选的实施方式,可以通过下列中的任一种方式获取确定待复制对象的类型信息:
通过编程语言提供的反射机制确定被复制对象的类型信息;
通过声明被复制对象时所使用的类型描述信息,得到被复制对象的类型信息,类型描述信息中包括被复制对象的类型信息;
通过访问被复制对象的生成代码中类型信息所对应的字段,得到被复制对象的类型信息。
在实际应用中,可以存在多种方式确定被复制对象的类型,本申请实施例提供了三种可选的方式,下面对本申请实施例提供的三种可选的实施方式进行详细说明。
方式1、通过编程语言提供的反射机制确定被复制对象的类型信息。
在实际应用中,编程语言的系统中通常可以提供底层反射机制,基于该底层反射机制可以访问编程代码或者系统自身携带的一些类型信息。例如,对应于java编程语言系统,可以提供部分函数接口获取到对象的数据结构。进而,在确定被复制对象的类型信息时,可以通过编程语言提供的反射机制来获取。
方式2、通过声明被复制对象时所使用的类型描述信息,得到被复制对象的类型信息。
在实际应用中,对于应用中的对象,在生成对象时,通常都需要对对象进行声明,而在声明一个对象时,一般是对对象的名称、对象的类型等信息进行声明,因此,可以通过声明被复制对象时所使用的类型描述信息确定被复制对象的类型信息。
方式3、通过访问被复制对象的生成代码中类型信息所对应的字段,得到被复制对象的类型信息。
在采用编程的方式生成被复制对象,会需要用到用于生成被复制对象的生成代码,由于在生成被复制对象时,需要依据被复制对象的类型信息,进而在生成代码中可以存在类型信息所对应的字段。基于此,在确定被复制对象的类型信息时,还可以通过访问被复制对象的生成代码中类型信息所对应的字段,得到被复制对象的类型信息。
步骤S102,根据类型信息,获取被复制对象的目标属性信息。
其中,目标属性信息指的是在生成被复制对象时需要依据的属性信息。在实际应用中,当被复制对象采用不同的类型时,所对应的目标属性信息可能是不同的,进而在确定被复制对象的类型信息后,还需要获取与被复制对象的类型信息相对应的目标属性信息。其中,根据被复制对象的类型信息获取被复制对象的目标属性信息的方式,本申请实施例不做限定。
作为一种可选的实施例,根据类型信息,获取被复制对象的目标属性信息,可以包括:
根据类型信息获取被复制对象的各属性,以及各属性的当前属性值;
将获取到的属性中当前属性值不等于预设值的属性确定为目标属性;
将各目标属性,以及各目标属性的当前属性值作为被复制对象的目标属性信息。
在基于被复制对象生成待复制对象时,基于类型信息和目标属性信息生成待复制对象。
在实际应用中,在确定被复制对象的类型信息后,可以根据确定的类型信息获取被复制对象的各属性,以及各属性当前的取值(即当前属性值)。但是,此时获取到的各属性的属性值中可能会存在一些属性的当前属性值等于预设值(可以为默认值),而这些等于预设值的当前属性值对于场景中的所有对象而言,在生成一个对象时可以为默认配置的,而为了减少数据处理量,因此在基于被复制对象生成待复制对象时,可以不将这些等于预设值的当前属性值以及对应的属性作为目标属性信息。若将被复制对象的全部的属性以及全部的当前属性值均作为目标属性信息,并以此目标属性信息生成待复制对象,由于该目标属性信息中包括了默认配置的属性和属性值,此时不仅浪费了资源,还增加了生成待复制对象的复杂度。
基于此,本申请实施例在获取到被复制对象的各属性,以及各属性的当前属性值后,可以对获取到的属性值与对应的预设值(如默认值)进行比对,若两者是相同的,则说明该属性以及该属性的当前属性值是可以不作为目标属性信息;反之,若获取到的属性值与对应的预设值(如默认值)是不相同的,则说明该属性以及该属性的当前属性值是需要获取的,此时可以将获取到的属性中当前属性值不等于预设值的属性确定为目标属性,并将各目标属性,以及各目标属性的当前属性值作为被复制对象的目标属性信息。
在本申请可选的实施例中,根据类型信息获取待复制对象的各属性,可以包括:
基于类型信息,并通过编程语言提供的反射机制获取被复制对象的各属性;或,
基于类型信息,通过声明被复制对象时所使用的类型描述信息获取被复制对象的各属性,类型描述信息中包括被复制对象对应于类型信息时的各属性信息。
在实际应用中,可以存在多种方式根据类型信息获取待复制对象的各属性,本申请实施例提供了几种可选的实施方式,下面对本申请实施例提供的几种可选的实施方式进行详细说明。
方式1、基于类型信息,并通过编程语言提供的反射机制获取被复制对象的各属性。
在实际应用中,编程语言的系统中通常可以提供底层反射机制,基于该底层反射机制可以访问编程代码或者系统自身携带的类型信息以及对应的各属性。进而,在制获取被复制对象的各属性时,可以通过编程语言提供的反射机制来获取对象的类型信息以及对应的各属性。
方式2、基于类型信息,通过声明被复制对象时所使用的类型描述信息获取被复制对象的各属性,类型描述信息中包括被复制对象对应于类型信息时的各属性信息。
在实际应用中,在生成被复制对象时通常需要声明该被复制对象的类型,以及在该类型下需要哪些属性以生成待复制对象,而在声明该被复制对象的类型、以及在该类型下需要哪些属性时,通常是可以基于包括被复制对象的类型、以及对应于该类型信息的各属性信息的类型描述信息确定。也就是说,在获取被复制对象的各属性时,可以获取该类型描述信息,然后通过该类型描述信息中对应于确定的类型信息的各属性信息来确定待复制对象的各属性。
步骤S103,在基于被复制对象生成待复制对象时,基于类型信息和目标属性信息生成待复制对象。
在实际应用中,若想要生成与被复制对象相同的对象,此时该相同的对象即为待复制对象。进一步的,在生成待复制对象时,可以基于获取到的类型信息和目标属性信息生成待复制对象。其中,基于类型信息和目标属性信息生成待复制对象的具体实现方式本申请实施例不做限定。例如,可以采用编程的方式生成待复制对象。
可选的,在本申请实施例中若采用编程的方式生成待复制对象,类型信息用于获取构造函数,构造函数用于生成待复制对象,被复制对象的各属性对应于生成待复制对象时待复制对象的各成员变量。
在实际应用中,当采用编程方式生成待复制对象时,对象的类型信息通常对应的是面向对象编程中的构造函数,对象的属性通常对应的是面向对象的成员变量。也就是说,当采用编程方式生成待复制对象时,可以基于确定的类型信息获取用于生成待复制对象的构造函数,而被复制对象的各属性对应于生成待复制对象时待复制对象的各成员变量。
在本申请实施例中,可以确定被复制对象的类型信息以及被复制对象的目标属性信息,这样在基于被复制对象生成多个待复制对象时,可以直接通过确定的目标属性信息生成多个待复制对象,并不需要像现有技术中,每次都需要获取被复制对象的类型信息和属性信息,然后根据类型信息和属性信息每次自行编写每个待复制对象的生成函数,提升了工作效率,并且可以有效地避免了因人工编写生成函数工作量大,容易出错的问题。
在本申请可选的实施例中,该方法还可以包括:
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序;
基于类型信息和目标属性信息生成待复制对象,包括:
基于用于生成待复制对象的生成程序生成待复制对象。
在实际应用中,在获取类型信息和目标属性信息后,若系统可以支持由在内存的变量、数组等容器直接引用所确定的类型信息,此时可以根据类型信息和目标属性信息,直接构建用于生成待复制对象的生成程序,这样在基于被复制对象生成待复制对象时,可以直接执行该生成程序以得到待复制对象。
其中,上述中内存的具体来源本申请实施例不限定,如可以由编程语言自身所提供的闭包机制来提供内存,而用于生成待复制对象的生成程序可以是JavaScript(脚本语言)、中间语言、机器代码等。
在本申请可选的实施例中,该方法还可以包括:
按照自定义数据格式对类型信息和目标属性信息进行保存,得到保存数据;
基于类型信息和目标属性信息生成待复制对象,包括:
根据自定义数据格式对应的数据规范对保存数据解析,得到类型信息和目标属性信息;
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序,并基于生成程序生成待复制对象。
在实际应用中,有些系统是不能够直接根据类型信息和目标属性信息构建用于生成待复制对象的生成程序的,或者有时是需要采用其它系统生成待复制对象。基于此,为了保证当采用不支持直接构建生成程序的系统时也可以生成待复制对象、以及采用其它系统时也可以生成待复制对象,在本申请实施例中,可以按照自定义数据的格式将获取到的类型信息和目标属性信息先保存为保存数据,在需要生成待复制对象时可以该保存数据,并基于与该自定义数据格式对应的数据规范,从保存数据中解析出类型信息和目标属性信息,然后根据解析出的类型信息和目标属性信息构建适用于当前所应用的系统的生成程序,并基于生成程序在当前应用的系统中生成待复制对象。
其中,由于不同系统的信息情况不同,进而根据解析出的类型信息和目标属性信息,构建适用于当前应用的系统的生成程序的方式也可能是不同的,即在根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序时,需要根据所应用的系统的实际信息情况确定具体的实现方式,因此,本申请实施例对于构建适用于当前应用系统的生成程序的实现方式不做具体限定。
本申请实施例提供的一种生成对象的装置的结构示意图,如图2所示,该装置60包括类型信息确定模块601、属性信息获取模块602和待复制对象生成模块603,其中:
类型信息确定模块601,用于确定被复制对象的类型信息;
属性信息获取模块602,用于根据类型信息,获取被复制对象的目标属性信息;
待复制对象生成模块603,用于在基于被复制对象生成待复制对象时,基于类型信息和目标属性信息生成待复制对象。
本申请可选的实施例中,属性信息获取模块在根据类型信息,获取被复制对象的目标属性信息时,具体用于:
根据类型信息获取被复制对象的各属性,以及各属性的当前属性值;
将获取到的属性中当前属性值不等于预设值的属性确定为目标属性;
将各目标属性,以及各目标属性的当前属性值作为被复制对象的目标属性信息。
本申请可选的实施例中,类型信息用于获取构造函数,构造函数用于生成待复制对象,被复制对象的各属性对应于生成待复制对象时待复制对象的各成员变量。
本申请可选的实施例中,该装置还包括程序生成模块,具体用于:
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序;
待复制对象生成模块在基于类型信息和目标属性信息生成待复制对象时,具体用于:
基于用于生成待复制对象的生成程序生成待复制对象。
本申请可选的实施例中,该装置还包括目标属性信息保存模块,具体用于:
按照自定义数据格式对类型信息和目标属性信息进行保存,得到保存数据;
待复制对象生成模块在基于类型信息和目标属性信息生成待复制对象时,具体用于:
根据自定义数据格式对应的数据规范对保存数据进行解析,得到类型信息和目标属性信息;
根据类型信息和目标属性信息,构建用于生成待复制对象的生成程序,并基于生成程序生成待复制对象。
本申请可选的实施例中,通过下列中的任一种方式获取确定待复制对象的类型信息:
通过编程语言提供的反射机制确定被复制对象的类型信息;
通过声明被复制对象时所使用的类型描述信息,得到被复制对象的类型信息,类型描述信息中包括被复制对象的类型信息;
通过访问被复制对象的生成代码中类型信息所对应的字段,得到被复制对象的类型信息。
本申请可选的实施例中,属性信息获取模块根据类型信息获取待复制对象的各属性时,具体用于:
基于类型信息,并通过编程语言提供的反射机制获取被复制对象的各属性;或,
基于类型信息,通过声明被复制对象时所使用的类型描述信息获取被复制对象的各属性,类型描述信息中包括被复制对象对应于类型信息时的各属性信息。
本实施例的生成对象的装置可执行本申请实施例所示的生成对象的方法,其实现原理相类似,此处不再赘述。
本申请实施例提供了一种电子设备,如图3所示,图3所示的电子设备2000包括:处理器2001和存储器2003。其中,处理器2001和存储器2003相连,如通过总线2002相连。可选地,电子设备2000还可以包括收发器2004。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本申请实施例的限定。
其中,处理器2001应用于本申请实施例中,用于实现图2所示的各模块的功能。
处理器2001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是PCI总线或EISA总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器2003用于存储执行本申请方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现图2所示实施例提供的生成对象的装置的动作。
本申请实施例提供了一种电子设备,本申请实施例中的电子设备包括:处理器;以及存储器,存储器配置用于存储机器可读指令,该指令在由该处理器执行时,使得该处理器执行生成对象的方法中的任一项方法。
在本申请实施例中,可以确定被复制对象的类型信息以及被复制对象的目标属性信息,这样在基于被复制对象生成多个待复制对象时,可以直接通过确定的目标属性信息生成多个待复制对象,并不需要像现有技术中,每次都需要获取被复制对象的类型信息和属性信息,然后根据类型信息和属性信每次自行编写每个待复制对象的生成函数,提升了工作效率,并且可以有效地避免了因人工编写生成函数工作量大,容易出错的问题。
本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,计算机存储介质用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机可以执行生成对象的方法中的任一项方法。
在本申请实施例中,可以确定被复制对象的类型信息以及被复制对象的目标属性信息,这样在基于被复制对象生成多个待复制对象时,可以直接通过确定的目标属性信息生成多个待复制对象,并不需要像现有技术中,每次都需要获取被复制对象的类型信息和属性信息,然后根据类型信息和属性信每次自行编写每个待复制对象的生成函数,提升了工作效率,并且可以有效地避免了因人工编写生成函数工作量大,容易出错的问题。
本申请中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本申请实施例中的一种生成对象的方法,在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种生成对象的方法,其特征在于,包括:
确定被复制对象的类型信息;
根据所述类型信息获取所述被复制对象的各属性,以及各属性的当前属性值;
根据所述被复制对象的各属性以及各属性的当前属性值,确定所述被复制对象的目标属性信息;
在基于所述被复制对象生成待复制对象时,基于所述类型信息和所述目标属性信息生成所述待复制对象;
其中,所述根据所述类型信息获取所述被复制对象的各属性,包括:
基于所述类型信息,通过声明所述被复制对象时所使用的类型描述信息获取所述被复制对象的各属性,所述类型描述信息中包括所述被复制对象对应于所述类型信息时的各属性信息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述被复制对象的各属性以及各属性的当前属性值,确定所述被复制对象的目标属性信息,包括:
将获取到的属性中当前属性值不等于预设值的属性确定为目标属性;
将各所述目标属性,以及各所述目标属性的当前属性值作为所述被复制对象的目标属性信息。
3.根据权利要求2所述的方法,其特征在于,所述类型信息用于获取构造函数,所述构造函数用于生成所述待复制对象,所述被复制对象的各属性对应于生成所述待复制对象时所述待复制对象的各成员变量。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述类型信息和所述目标属性信息,构建用于生成所述待复制对象的生成程序;
所述基于所述类型信息和所述目标属性信息生成所述待复制对象,包括:
基于所述用于生成所述待复制对象的生成程序生成所述待复制对象。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
按照自定义数据格式对所述类型信息和所述目标属性信息进行保存,得到保存数据;
所述基于所述类型信息和所述目标属性信息生成所述待复制对象,包括:
根据所述自定义数据格式对应的数据规范对所述保存数据进行解析,得到所述类型信息和所述目标属性信息;
根据所述类型信息和所述目标属性信息,构建用于生成所述待复制对象的生成程序,并基于所述生成程序生成所述待复制对象。
6.根据权利要求2所述的方法,其特征在于,通过下列中的任一种方式获取确定被复制对象的类型信息:
通过编程语言提供的反射机制确定所述被复制对象的类型信息;
通过声明所述被复制对象时所使用的类型描述信息,得到所述被复制对象的类型信息,所述类型描述信息中包括所述被复制对象的类型信息;
通过访问所述被复制对象的生成代码中类型信息所对应的字段,得到所述被复制对象的类型信息。
7.根据权利要求2所述的方法,其特征在于,所述根据所述类型信息获取所述被复制对象的各属性,还包括:
基于所述类型信息,并通过编程语言提供的反射机制获取所述被复制对象的各属性。
8.一种生成对象的装置,其特征在于,包括:
类型信息确定模块,用于确定被复制对象的类型信息;
属性信息获取模块,用于根据所述类型信息获取所述被复制对象的各属性,以及各属性的当前属性值;
根据所述被复制对象的各属性以及各属性的当前属性值,确定所述被复制对象的目标属性信息;
待复制对象生成模块,用于在基于所述被复制对象生成待复制对象时,基于所述类型信息和所述目标属性信息生成所述待复制对象;
所述属性信息获取模块在用于根据所述类型信息获取所述被复制对象的各属性时,具体用于:
基于所述类型信息,通过声明所述被复制对象时所使用的类型描述信息获取所述被复制对象的各属性,所述类型描述信息中包括所述被复制对象对应于所述类型信息时的各属性信息。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执行权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机存储介质用于存储计算机指令,当所述计算机指令在计算机上运行时,使得计算机可以执行上述权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910912637.0A CN111796806B (zh) | 2019-09-25 | 2019-09-25 | 生成对象的方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910912637.0A CN111796806B (zh) | 2019-09-25 | 2019-09-25 | 生成对象的方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111796806A CN111796806A (zh) | 2020-10-20 |
CN111796806B true CN111796806B (zh) | 2022-07-08 |
Family
ID=72805593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910912637.0A Active CN111796806B (zh) | 2019-09-25 | 2019-09-25 | 生成对象的方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111796806B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003083966A (ja) * | 2001-09-12 | 2003-03-19 | A & T:Kk | 抗原/抗体水溶液 |
CN101154294A (zh) * | 2006-09-29 | 2008-04-02 | 三星电子株式会社 | 渲染三维图形数据的方法、介质和系统 |
CN104766361A (zh) * | 2015-04-29 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 一种残影效果的实现方法,及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1624393A1 (en) * | 2004-08-06 | 2006-02-08 | Vrije Universiteit Brussel | System and method for simulating motion of a multibody system |
-
2019
- 2019-09-25 CN CN201910912637.0A patent/CN111796806B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003083966A (ja) * | 2001-09-12 | 2003-03-19 | A & T:Kk | 抗原/抗体水溶液 |
CN101154294A (zh) * | 2006-09-29 | 2008-04-02 | 三星电子株式会社 | 渲染三维图形数据的方法、介质和系统 |
CN104766361A (zh) * | 2015-04-29 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 一种残影效果的实现方法,及装置 |
Non-Patent Citations (2)
Title |
---|
Android OpenGLES2.0(十一)——利用OpenGLES做Camera预览;湖广午王;《CSDN博客 https://blog.csdn.net/junzia/article/details/53166332》;20161126;全文 * |
javascript高仿热血传奇游戏;_C92;《CSDN博客 https://blog.csdn.net/weixin_41754545/article/details/79357204》;20180223;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111796806A (zh) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8418134B2 (en) | Method for efficiently managing property types and constraints in a prototype based dynamic programming language | |
CA3049831A1 (en) | Database state determining method and device, and consistency verifying method and device | |
CN111198868B (zh) | 一种智能分库实时数据迁移方法和装置 | |
CN108614702B (zh) | 字节码优化方法及装置 | |
US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
CN112765023A (zh) | 测试用例生成方法、装置 | |
CN115237599B (zh) | 一种渲染任务处理方法和装置 | |
EP4231138A1 (en) | Method and apparatus for fixing weak memory ordering problem | |
CN111782207A (zh) | 任务流代码生成方法、装置、设备及存储介质 | |
US11762760B1 (en) | Scalable test workflow service | |
CN113535141A (zh) | 数据库操作代码的生成方法及装置 | |
CN110989999A (zh) | 代码生成方法、装置、电子设备及介质 | |
US8762976B2 (en) | Static extensibility models with dynamic languages and scripts | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
US20140344785A1 (en) | Automatic generation of a resource reconfiguring test | |
CN114116224A (zh) | 文件合并方法、处理器及存储介质 | |
CN111796806B (zh) | 生成对象的方法、装置、电子设备及可读存储介质 | |
CN106843819B (zh) | 对象序列化的方法及装置 | |
US8276165B2 (en) | Continuation-based runtime callback invocation | |
US9436587B2 (en) | Test context generation | |
WO2020158347A1 (ja) | 情報処理装置、方法およびプログラム | |
CN104915352B (zh) | 一种验证MapReduce环境下处理数据正确性的方法和装置 | |
US7917893B2 (en) | Using a system of annotations to generate views and adapters | |
US10101920B2 (en) | Disk I/O attribution | |
CN116523052B (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 |