CN111124382A - Java中的属性赋值方法、装置及服务器 - Google Patents

Java中的属性赋值方法、装置及服务器 Download PDF

Info

Publication number
CN111124382A
CN111124382A CN201911305824.9A CN201911305824A CN111124382A CN 111124382 A CN111124382 A CN 111124382A CN 201911305824 A CN201911305824 A CN 201911305824A CN 111124382 A CN111124382 A CN 111124382A
Authority
CN
China
Prior art keywords
attribute
value
annotation information
preset
java
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.)
Pending
Application number
CN201911305824.9A
Other languages
English (en)
Inventor
王文姝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201911305824.9A priority Critical patent/CN111124382A/zh
Publication of CN111124382A publication Critical patent/CN111124382A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-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)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种Java中的属性赋值方法、装置及服务器,首先获取预先创建的第一对象和第二对象;然后获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中的注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;最后对与注解信息相关联的属性进行赋值处理。该方式中,通过对Java中的属性设置注解信息来指示属性的赋值方式,从而可以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,节约了工作量,同时也便于代码的维护。

Description

Java中的属性赋值方法、装置及服务器
技术领域
本发明涉及云计算技术领域,尤其是涉及一种Java中的属性赋值方法、装置及服务器。
背景技术
相关技术中,Java程序代码中仅能实现同名属性间属性值的复制,例如,可以将对象a中的x属性的属性值,复制到对象b中的x属性,也可以复制到对象c中的x属性;但是,不能实现对象a中的x属性的属性值,复制到对象b中的y属性;因而对于属性名不同的属性值复制,需要工程师手动实现,操作繁琐,工作量大,同时也不便于代码的维护。
发明内容
本发明的目的在于提供一种Java中的属性赋值方法、装置及服务器,以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,节约工作量,同时便于代码的维护。
第一方面,本发明实施例提供了一种Java中的属性赋值方法,其中,该方法包括:获取预先创建的第一对象和第二对象;获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中,注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;对与注解信息相关联的属性进行赋值处理。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,获取预先创建的第一对象和第二对象的步骤,包括:基于预设的第一类创建第一对象,基于预设的第二类创建第二对象;其中,第一类或第二类中,为第一属性配置有注解信息。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,获取第一对象或第二对象中,携带有预设的注解信息的第一属性的步骤,包括:遍历第一对象中的属性,得到携带有预设的注解信息的第一属性;或者,遍历第二对象中的属性,得到携带有预设的注解信息的第一属性。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,对与注解信息相关联的属性进行赋值处理的步骤,包括:如果注解信息指示将第一属性的属性值赋值给预设的第二属性,提取第一属性的属性值,将第一属性的属性值赋值给第二属性;如果注解信息指示将预设的第二属性的属性值赋值给第一属性,提取第二属性的属性值,将第二属性的属性值赋值给第一属性。
结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,提取第一属性的属性值的步骤,包括:如果注解信息指示将第一属性的属性值赋值给预设的第二属性,通过Java反射机制,调用第一属性对应的取值函数,提取第一属性的属性值;将第一属性的属性值复制给第二属性的步骤,包括:通过Java反射机制,调用第二属性对应的赋值函数,将第一属性的属性值赋值给第二属性。
结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,提取第一属性的属性值的步骤之后,该方法还包括:将第一属性的属性值的数据类型转换为第二属性的数据类型,或者将上述第二属性的数据类型转换为第一属性的属性值的数据类型。
结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,提取第二属性的属性值的步骤,包括:如果注解信息指示将预设的第二属性的属性值赋值给第一属性,通过Java反射机制,调用第二属性对应的取值函数,提取第二属性的属性值;将第二属性的属性值赋值给第一属性的步骤,包括:通过Java反射机制,调用第一属性对应的赋值函数,将第二属性的属性值赋值给第一属性。
结合第一方面的第六种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,提取第二属性的属性值的步骤之后,该方法还包括:将第二属性的属性值的数据类型转换为第一属性的数据类型,或者将第一属性的属性值的数据类型转换为第二属性的数据类型。
第二方面,本发明实施例提供了一种Java中的属性赋值装置,其中,该装置包括:对象获取模块,用于获取预先创建的第一对象和第二对象;属性获取模块,用于获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中,注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;赋值处理模块,用于对与注解信息相关联的属性进行赋值处理。
第三方面,本发明实施例提供了一种服务器,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述Java中的属性赋值方法。
第四方面,本发明实施例提供了一种机器可读存储介质,其中,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述Java中的属性赋值方法。
本发明实施例带来了以下有益效果:
本发明提供的一种Java中的属性赋值方法、装置及服务器,首先获取预先创建的第一对象和第二对象;然后获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中的注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;最后对与注解信息相关联的属性进行赋值处理。该方式中,通过对Java中的属性设置注解信息来指示属性的赋值方式,从而可以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,节约了工作量,同时也便于代码的维护。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种Java中的属性赋值方法的流程图;
图2为本发明实施例提供的另一种Java中的属性赋值方法的流程图;
图3为本发明实施例提供的另一种Java中的属性赋值方法的流程图;
图4为本发明实施例提供的一种Java中的属性赋值装置的结构示意图;
图5为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
通过Java语言实现的线上服务中,用户请求通常带有大量参数,参数在使用过程中需要发送给商品、订单、实例等多个服务,因而存在大量的参数重复赋值的操作。然而目前Java程序代码中仅能实现同名属性间属性值的复制,而对于属性名不同的属性值复制,需要工程师手动实现,操作繁琐,工作量大,同时也不便于代码的维护。而且现有方案中,可以采用Java中BeanUtils工具类或PropertyUtils工具类进行同名属性间属性值的复制;其中,BeanUtils不支持属性值的数据类型转换,而PropertyUtils仅在一定的数据类型范围内,支持属性值的数据类型转换,可转换的数据类型有限。基于此,本发明实施例提供了一种Java中的属性赋值方法、装置及服务器,该方法可以应用于各种通过Java语言实现的系统或服务中,下面通过实施例进行描述。
首先,本发明实施例提供了一种Java中的属性赋值方法,如图1所示,该方法包括以下步骤:
步骤S102,获取预先创建的第一对象和第二对象;
上述第一对象和第二对象通常是Java中的对象,该Java中的对象可以通过类进行实例化得到,该第一对象和第二对象可以由同一个类实例化得到,也可以由不同的类实例化得到。每个对象中通常包含着属性和行为。由同一个类实例化得到的多个对象,通常具有相似的属性和行为,但是每个对象可以具有自己个性化的属性值。其中,上述实例化是指在面向对象的编程中,用类创建对象的过程。在Java中具体创建对象的方法一般有很多种,例如,可以由new关键字或反射技术进行创建,也可以利用Class类的newInstance方法等创建。
步骤S104,获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中,该注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;该第一属性和第二属性位于不同的对象中;
上述第一属性可以是指第一对象或第二对象所包含的某个特定的携带有预设的注解信息的属性,每个属性通常包含有一个或多个属性值。具体可以通过遍历的方式获取携带有预设的注解信息的第一属性;在实际实现时,可以遍历第一对象,得到第一属性,也可以遍历第二对象,得到第一属性,具体可以根据实际需求进行设置。
上述预设的注解信息可以通过注解的方式对第一属性的属性值配置赋值关系。上述注解信息可以通过Java注解功能实现,该注解信息可以是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能,注解信息可以利用特定的代码实现也可以利用自定义的方式实现。
上述预设的第二属性可以是根据第一属性的注解信息的内容确定的,比如,注解信息为to="y",则预设的第二属性即为y属性,或者注解信息为from="x",则预设的第二属性即为x属性。上述注解信息通常是用作不同属性间的指示功能,比如,将第一属性的属性值赋值给预设的第二属性,也可以将预设的第二属性的属性值赋值给第一属性。不同的属性位于不同的对象中,如第一属性位于上述第一对象中,第二属性位于上述第二对象中,或者第一属性位于上述第二对象中,第二属性位于上述第一对象中,从而实现不同对象间不同属性之间进行赋值。不同属性之间属性值的赋值过程,也可以理解为不同属性之间属性值的复制过程。步骤S106,对与注解信息相关联的属性进行赋值处理。
上述注解信息相关联的属性通常包括携带该注解信息的属性,以及该注解信息中包含的数据。与注解信息相关联的属性通常位于不同的对象中,可以是已经创建完成的多个对象的不同属性,比如,相关联的属性可以是对象a中的a1属性和对象b中的b1属性,然后根据注解信息确定属性间的赋值关系,可以是将a1属性的属性值赋值给b1属性,也可以是将b1属性的属性值赋值给a1属性。在Java语言中上述赋值处理有很多种方法,可以利用set()、get()方法进行赋值,也可以构造函数为属性进行赋值等。上述方式可以是对象间不同属性间的属性值进行赋值,操作非常灵活。
本发明实施例提供的一种Java中的属性赋值方法,首先获取预先创建的第一对象和第二对象;然后获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中的注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;最后对与注解信息相关联的属性进行赋值处理。该方式中,通过对Java中的属性设置注解信息来指示属性的赋值方式,从而可以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,节约了工作量,同时也便于代码的维护。
本发明实施例提供了另一种Java中的属性赋值方法,该方法在上述实施例方法的基础上实现;该方法重点描述获取预先创建的第一对象和第二对象的步骤,以及获取第一对象或第二对象中,携带有预设的注解信息的第一属性的步骤(通过步骤S202-S204实现)的具体实现过程,如图2所示,该方法包括如下步骤:
步骤S202,基于预设的第一类创建第一对象,基于预设的第二类创建第二对象;其中,该第一类或第二类中,为第一属性配置有注解信息;
上述预设的第一类和第二类为Java类,Java类可以是对象的类型,使用一个通用的类可以定义同一类型的对象,对象可以是类的实例,一个类可以拥有多个实例,相当于一个类可以拥有多个对象。上述第一类和第二类可以为同一个类,也可以为不同类。在创建第一类或第二类的过程中可以为第一属性配置注解信息,注明第一属性的属性值需要赋值的属性,或者注明第一属性将要被赋值的属性的属性值。
如果该第一属性属于第一类,则在第一类中为第一属性配置注解信息;在基于第一类创建第一对象时,第一属性及其注解信息继承至第一对象。如果该第一属性属于第二类,则在第二类中为第一属性配置注解信息;在基于第二类创建第二对象时,第一属性及其注解信息继承至第二对象。
具体实现时,例如,创建一个A类和一个B类,其中,A类作为第一类,B类作为第二类;A类和B类可以分别通过public class A和public class B代码实现,其中,注解功能可以通过@CopyableField(注解信息)实现;例如,@CopyableField(to="y"),可以将A类中的x属性的属性值赋值到B类中的y属性,注解信息配置于A类中,可以通过以下代码实现:
Figure BDA0002321913670000081
另一种实现方式中,如果将A类中的x属性复制到B类中的y属性,注解信息配置于B类中,则可以通过注解功能@CopyableField(from="x")实现,具体代码如下:
Figure BDA0002321913670000091
上述代码是类的创建过程,同时也是对类的定义,在实际使用中,上述的A类实例化对象后,也就是类变成对象之后,可以在初始化阶段,也可以在使用中,会对属性进行相应的赋值;例如,通过getX()方法可以得到属性x的属性值,该属性值可以是用户发送的,也可以是从内存中获得的,通常不同属性的属性值获取的方式不一样。
在完成第一类和第二类的创建之后,具体的属性赋值过程可以通过copy方法函数实现,其中copy方法函数有两种方式,一种方式中,该方法函数的入参可以直接是已经创建完成的两个对象,如上述第一对象和第二对象;另一种方式中,该copy方法函数的入参可以是已经创建完成的一个对象,以及未创建完成的另一个对象的类型,然后再在该copy方法函数里面创建另一个对象。
具体地,若已经存在通过A类创建的对象a和通过B类创建的对象b,则copy方法函数可以被声明为copy(Object a,Object b),即该copy方法函数的入参为对象a和对象b,在需要赋值时程序会调用该copy方法函数copy(a,b);若已经存在通常A类创建的对象a,而不存在对象b,则copy方法函数可以被声明为copy(Object a,Class<T>bType),然后在执行该copy方法函数的过程中,通过bType创建对象b,在需要赋值时程序会调用copy(a,B.class)。
步骤S204,遍历第一对象中的属性,得到携带有预设的注解信息的第一属性;或者,遍历第二对象中的属性,得到携带有预设的注解信息的第一属性;其中,该注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;
上述遍历第一对象或第二对象中的属性,可以通过循环的方式,也可以使用迭代器遍历对象中的属性;遍历对象中属性的过程,可以理解为寻找每个对象中的各个属性,判断每个寻找到的属性是否携带有预设的注解信息,然后将携带有预设的注解信息的属性确定为第一属性。在实际实现时,具体遍历第一对象还是第二对象,可以根据实际需求设置;例如,如果携带有预设的注解信息的第一属性设置在第一对象,则遍历第一对象,无需再遍历第二对象,以节约运算资源;如果携带有预设的注解信息的第一属性设置在第二对象,则遍历第二对象,无需再遍历第一对象。
如果在第一对象的属性中遍历得到带有预设的注解信息的第一属性,则说明该第一属性属于第一对象,根据第一属性的注解信息,可以将第一属性的属性值赋值给预设的第二属性,或者将预设的第二属性的属性值赋值给该第一属性。此时,该第二属性位于前述第二对象中。如果在第二对象的属性中遍历得到带有预设的注解信息的第一属性,则说明该第一属性属于第二对象,根据第一属性的注解信息,可以将第一属性的属性值赋值给预设的第二属性,或者将预设的第二属性的属性值赋值给该第一属性。此时,该第二属性位于前述第一对象中。
举例说明,上述copy(Object a,Class<T>bType)函数有两个入参,一个是对象a,一个是待创建的对象b的类型,其中对象a是经过copy函数传参传过来的,是之前已经创建好的对象,在copy函数中创建完成对象b之后,将对象a的属性进行遍历。另外,如果对象b中有某个属性的属性值可以采用已经有属性值,也可以将对象a中的某个属性的属性值赋值给对象b,则可以根据业务需求确定该属性的具体属性值,如果该属性值采用已有的属性值,此时则不再把对象a里面的某个属性的属性值复制给对象b。
步骤S206,对与注解信息相关联的属性进行赋值处理。
本发明实施例提供的另一种Java中的属性赋值方法,首先获取预先创建的第一对象和第二对象;然后获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中的注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;最后对与注解信息相关联的属性进行赋值处理。该方式中,通过对Java中的属性设置注解信息来指示属性的赋值方式,从而可以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,减少了代码量,节约了工作量,可以使参数的传递配置可见,同时也便于代码的维护。
本发明实施例提供了另一种Java中的属性赋值方法,该方法在上述实施例方法的基础上实现;该方法重点描述对与注解信息相关联的属性进行赋值处理的步骤(通过步骤S306-S308实现)的具体实现过程,如图3所示,该方法包括如下步骤:
步骤S302,基于预设的第一类创建第一对象,基于预设的第二类创建第二对象;其中,第一类或第二类中,为第一属性配置有注解信息;
步骤S304,遍历第一对象中的属性,得到携带有预设的注解信息的第一属性;或者,遍历第二对象中的属性,得到携带有预设的注解信息的第一属性;
步骤306,如果上述注解信息指示将第一属性的属性值赋值给预设的第二属性,提取第一属性的属性值,将第一属性的属性值赋值给第二属性;
上述提取第一属性的属性值可以通过Java反射机制,调用第一属性对应的取值函数,提取第一属性的属性值。其中,Java反射机制可以在程序运行状态中,对于任意一个类,都能知道该类的所有属性和方法;对于任意一个对象,都能调用该对象的任意一个属性和方法。上述取值函数可以是get()函数,比如,第一属性为属性x,则调用属性x对应的取值函数,可以表示为getX(),然后通过该函数提取第一属性的属性值。
上述将第一属性的属性值复制给第二属性,可以通过Java反射机制,调用第二属性对应的赋值函数,将第一属性的属性值赋值给第二属性。其中,赋值函数可以是set()函数,比如,第二属性为属性y,则调用属性y对应的取值函数,可以表示为setY()。然后将第一属性的属性值赋值给第二属性。
进一步地,在提取第一属性的属性值后,如果第一属性和第二属性的数据类型不同,还需要将第一属性的属性值的数据类型转换为第二属性的数据类型,或者将第二属性的数据类型转换为第一属性的属性值的数据类型。
上述属性值的数据类型可以是数值型、字符型、布尔型、类、接口及数组等,因此不同属性的属性值的数据类型也有可能不同,在进行属性值赋值时,则需要将第一属性的属性值的数据类型转换为第二属性的数据类型,或者将上述第二属性的数据类型转换为第一属性的属性值的数据类型,以使第一属性和第二属性的属性值的数据类型相同。具体转换第一属性的数据类型还是转换第二属性的数据类型,可以根据实际业务需求进行设置。
举例说明,对应上述步骤S202的例子,如果将A类中的x属性赋值到B类中的y属性,且注解信息配置于A类中,为了将x属性的属性值的数据类型转换为y属性的数据类型,具体可以通过以下代码实现:
Figure BDA0002321913670000131
上述Integer.parseInt(String)的作用可以将String字符类型数据转换为Integer整型数据。上述代码中,属性x的属性值的数据类型为Integer整型数据;属性y的属性值的初始数据类型为String字符类型,然后通过上述Integer.parseInt(y),将属性y的属性值的数据类型从String字符类型转换为Integer整型数据,以使属性y和属性x的属性值的数据类型相同。当然,另一种实现方式中,可以将属性x的属性值的数据类型从Integer整型数据转换为String字符类型,以使属性y和属性x的属性值的数据类型相同。
步骤308,如果上述注解信息指示将预设的第二属性的属性值赋值给第一属性,提取第二属性的属性值,将第二属性的属性值赋值给第一属性。
上述提取第二属性的属性值可以通过Java反射机制,调用第二属性对应的取值函数,提取第二属性的属性值。其中,Java反射机制可以在程序运行状态中,对于任意一个类,都能知道该类的所有属性和方法;对于任意一个对象,都能调用该对象的任意一个属性和方法。上述取值函数可以是get()函数,比如,第二属性为属性x,则调用属性x对应的取值函数,可以表示为getX(),然后通过该函数提取第二属性的属性值。
上述将第二属性的属性值赋值给第一属性,可以通过Java反射机制,调用第一属性对应的赋值函数,将第二属性的属性值赋值给第一属性。其中,赋值函数可以是set()函数,比如,第一属性为属性y,则调用属性y对应的取值函数,可以表示为setY(),然后将第二属性的属性值赋值给第一属性。同时set()方法中,可以对参数做初步的处理,方便实现类型转换、值间映射的功能。
进一步地,在提取第二属性的属性值之后,如果第一属性和第二属性的数据类型不同,还需要将第二属性的属性值的数据类型转换为第一属性的数据类型,或者将第一属性的属性值的数据类型转换为第二属性的数据类型。其具体的数据类型转换的实现方法与上述步骤S306中的数据类型转换的实现方法相同,对于不同类型的第一属性和第二属性,只需重写get()或set()方法就可以完成数据类型转换,为简要描述,可以参考上述步骤S306的相关内容,在此不做赘述。
本发明实施例提供的另一种Java中的属性赋值方法,首先获取预先创建的第一对象和第二对象;然后遍历第一对象中的属性,得到携带有预设的注解信息的第一属性;或者,遍历第二对象中的属性,得到携带有预设的注解信息的第一属性;利用Java反射机制对与注解信息相关联的属性进行赋值处理,最后将相关联的属性值进行数据类型。该方式中,通过对Java中的属性设置注解信息来指示属性的赋值方式,同时利用Java反射机制调用取值函数,从而可以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,节约了工作量,可以使参数的传递配置可见,同时也便于代码的维护。
对应于上述Java中的属性赋值方法实施例,本发明实施例还提供了一种Java中的属性赋值装置,如图4所示,该装置包括:
对象获取模块41,用于获取预先创建的第一对象和第二对象;
属性获取模块42,用于获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中,该注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;该第一属性和第二属性位于不同的对象中;
赋值处理模块43,用于对与注解信息相关联的属性进行赋值处理。
进一步地,上述对象获取模块还用于,基于预设的第一类创建第一对象,基于预设的第二类创建第二对象;其中,第一类或第二类中,为第一属性配置有注解信息。
进一步地,上述属性获取模块还用于,遍历第一对象中的属性,得到携带有预设的注解信息的第一属性;或者,遍历第二对象中的属性,得到携带有预设的注解信息的第一属性。
进一步地,上述赋值处理模块还用于,如果注解信息指示将第一属性的属性值赋值给预设的第二属性,提取第一属性的属性值,将第一属性的属性值赋值给第二属性;如果注解信息指示将预设的第二属性的属性值赋值给第一属性,提取第二属性的属性值,将第二属性的属性值赋值给第一属性。
进一步地,上述赋值处理模块还用于,如果注解信息指示将第一属性的属性值赋值给预设的第二属性,通过Java反射机制,调用第一属性对应的取值函数,提取第一属性的属性值;通过Java反射机制,调用第二属性对应的赋值函数,将第一属性的属性值赋值给第二属性。
进一步地,上述方法还包括,将第一属性的属性值的数据类型转换为第二属性的数据类型,或者将上述第二属性的数据类型转换为第一属性的属性值的数据类型。
进一步地,上述赋值处理模块还用于,如果注解信息指示将预设的第二属性的属性值赋值给第一属性,通过Java反射机制,调用第二属性对应的取值函数,提取第二属性的属性值;通过Java反射机制,调用第一属性对应的赋值函数,将第二属性的属性值赋值给第一属性。
进一步地,上述方法还包括,将第二属性的属性值的数据类型转换为第一属性的数据类型,或者将上述第一属性的属性值的数据类型转换为所述第二属性的数据类型。
本发明提供的一种Java中的属性赋值装置,首先获取预先创建的第一对象和第二对象;然后获取第一对象或第二对象中,携带有预设的注解信息的第一属性;其中的注解信息用于指示:将第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给第一属性;第一属性和第二属性位于不同的对象中;最后对与注解信息相关联的属性进行赋值处理。该方式中,通过对Java中的属性设置注解信息来指示属性的赋值方式,从而可以实现对象间不同属性间的属性值的复制,无需再通过工程师手动对不同属性间的属性值的复制,节约了工作量,同时也便于代码的维护。
本发明实施例所提供的Java中的属性赋值装置,其实现原理及产生的技术效果和前述Java中的属性赋值方法实施例相同,为简要描述,Java中的属性赋值装置实施例部分未提及之处,可参考前述流量调度方法实施例中相应内容。
本发明实施例还提供一种服务器,参见图5所示,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述Java中的属性赋值方法。
进一步地,图5所示的服务器还包括总线132和通信接口133,处理器130、通信接口133和存储器131通过总线132连接。
其中,存储器131可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口133(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线132可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器130可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器130中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器130可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器131,处理器130读取存储器131中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述Java中的属性赋值方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的Java中的属性赋值方法、装置及服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (11)

1.一种Java中的属性赋值方法,其特征在于,所述方法包括:
获取预先创建的第一对象和第二对象;
获取所述第一对象或所述第二对象中,携带有预设的注解信息的第一属性;其中,所述注解信息用于指示:将所述第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给所述第一属性;所述第一属性和所述第二属性位于不同的对象中;
对与所述注解信息相关联的属性进行赋值处理。
2.根据权利要求1所述的方法,其特征在于,获取预先创建的第一对象和第二对象的步骤,包括:
基于预设的第一类创建第一对象,基于预设的第二类创建第二对象;其中,所述第一类或所述第二类中,为所述第一属性配置有所述注解信息。
3.根据权利要求1所述的方法,其特征在于,获取所述第一对象或所述第二对象中,携带有预设的注解信息的第一属性的步骤,包括:
遍历所述第一对象中的属性,得到携带有预设的注解信息的第一属性;或者,遍历所述第二对象中的属性,得到携带有预设的注解信息的第一属性。
4.根据权利要求1所述的方法,其特征在于,对与所述注解信息相关联的属性进行赋值处理的步骤,包括:
如果所述注解信息指示将所述第一属性的属性值赋值给预设的第二属性,提取所述第一属性的属性值,将所述第一属性的属性值赋值给所述第二属性;
如果所述注解信息指示将预设的第二属性的属性值赋值给所述第一属性,提取所述第二属性的属性值,将所述第二属性的属性值赋值给所述第一属性。
5.根据权利要求4所述的方法,其特征在于,提取所述第一属性的属性值的步骤,包括:如果所述注解信息指示将所述第一属性的属性值赋值给预设的第二属性,通过Java反射机制,调用所述第一属性对应的取值函数,提取所述第一属性的属性值;
所述将所述第一属性的属性值复制给所述第二属性的步骤,包括:通过Java反射机制,调用所述第二属性对应的赋值函数,将所述第一属性的属性值赋值给所述第二属性。
6.根据权利要求5所述的方法,其特征在于,提取所述第一属性的属性值的步骤之后,所述方法还包括:将所述第一属性的属性值的数据类型转换为所述第二属性的数据类型,或者将所述第二属性的数据类型转换为所述第一属性的属性值的数据类型。
7.根据权利要求4所述的方法,其特征在于,提取所述第二属性的属性值的步骤,包括:如果所述注解信息指示将预设的第二属性的属性值赋值给所述第一属性,通过Java反射机制,调用所述第二属性对应的取值函数,提取所述第二属性的属性值;
所述将所述第二属性的属性值赋值给所述第一属性的步骤,包括:通过Java反射机制,调用所述第一属性对应的赋值函数,将所述第二属性的属性值赋值给所述第一属性。
8.根据权利要求7所述的方法,其特征在于,提取所述第二属性的属性值的步骤之后,所述方法还包括:将所述第二属性的属性值的数据类型转换为所述第一属性的数据类型,或者将所述第一属性的属性值的数据类型转换为所述第二属性的数据类型。
9.一种Java中的属性赋值装置,其特征在于,所述装置包括:
对象获取模块,用于获取预先创建的第一对象和第二对象;
属性获取模块,用于获取所述第一对象或所述第二对象中,携带有预设的注解信息的第一属性;其中,所述注解信息用于指示:将所述第一属性的属性值赋值给预设的第二属性,或者,将预设的第二属性的属性值赋值给所述第一属性;所述第一属性和所述第二属性位于不同的对象中;
赋值处理模块,用于对与所述注解信息相关联的属性进行赋值处理。
10.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-8任一项所述的Java中的属性赋值方法。
11.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1-8任一项所述的Java中的属性赋值方法。
CN201911305824.9A 2019-12-17 2019-12-17 Java中的属性赋值方法、装置及服务器 Pending CN111124382A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911305824.9A CN111124382A (zh) 2019-12-17 2019-12-17 Java中的属性赋值方法、装置及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911305824.9A CN111124382A (zh) 2019-12-17 2019-12-17 Java中的属性赋值方法、装置及服务器

Publications (1)

Publication Number Publication Date
CN111124382A true CN111124382A (zh) 2020-05-08

Family

ID=70498303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911305824.9A Pending CN111124382A (zh) 2019-12-17 2019-12-17 Java中的属性赋值方法、装置及服务器

Country Status (1)

Country Link
CN (1) CN111124382A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913814A (zh) * 2020-07-09 2020-11-10 海南车智易通信息技术有限公司 对象拷贝方法及计算设备
CN112835563A (zh) * 2021-01-26 2021-05-25 广州欢网科技有限责任公司 一种代码克隆方法、装置、可读存储介质以及计算机
CN114154944A (zh) * 2021-11-03 2022-03-08 广州市玄武无线科技股份有限公司 业务审核方法、设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294462A (zh) * 2012-03-05 2013-09-11 阿里巴巴集团控股有限公司 对象映射处理方法、映射处理器和对象映射处理系统
CN103745010A (zh) * 2014-01-28 2014-04-23 北京京东尚科信息技术有限公司 一种基于csv文件确定对象属性值的方法和装置
CN105260168A (zh) * 2014-07-15 2016-01-20 阿里巴巴集团控股有限公司 日志输出方法和装置
CN106843872A (zh) * 2017-01-17 2017-06-13 千寻位置网络有限公司 赋值转换方法
CN107766039A (zh) * 2017-10-30 2018-03-06 中国平安财产保险股份有限公司 从Java对象中存取属性值的方法、服务器及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294462A (zh) * 2012-03-05 2013-09-11 阿里巴巴集团控股有限公司 对象映射处理方法、映射处理器和对象映射处理系统
CN103745010A (zh) * 2014-01-28 2014-04-23 北京京东尚科信息技术有限公司 一种基于csv文件确定对象属性值的方法和装置
CN105260168A (zh) * 2014-07-15 2016-01-20 阿里巴巴集团控股有限公司 日志输出方法和装置
CN106843872A (zh) * 2017-01-17 2017-06-13 千寻位置网络有限公司 赋值转换方法
CN107766039A (zh) * 2017-10-30 2018-03-06 中国平安财产保险股份有限公司 从Java对象中存取属性值的方法、服务器及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913814A (zh) * 2020-07-09 2020-11-10 海南车智易通信息技术有限公司 对象拷贝方法及计算设备
CN111913814B (zh) * 2020-07-09 2024-05-31 海南车智易通信息技术有限公司 对象拷贝方法及计算设备
CN112835563A (zh) * 2021-01-26 2021-05-25 广州欢网科技有限责任公司 一种代码克隆方法、装置、可读存储介质以及计算机
CN114154944A (zh) * 2021-11-03 2022-03-08 广州市玄武无线科技股份有限公司 业务审核方法、设备及计算机可读存储介质
CN114154944B (zh) * 2021-11-03 2023-04-07 广州市玄武无线科技股份有限公司 业务审核方法、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
JP6686910B2 (ja) ネットワーク機能仮想化管理およびオーケストレーション方法と装置とプログラム
CN107896162B (zh) 监控系统的部署方法、装置、计算机设备及存储介质
CN109117209B (zh) 序列化和反序列化方法及装置
CN111124382A (zh) Java中的属性赋值方法、装置及服务器
CN106874247B (zh) 一种报表生成方法及装置
CN110262783B (zh) 一种接口生成方法、装置及终端设备
CN111767143A (zh) 交易数据处理方法、装置、设备及系统
CN108279882B (zh) 框架生成方法、装置、设备及计算机可读介质
CN111124480B (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN113656503A (zh) 数据同步方法、装置、系统及计算机可读存储介质
CN109062906B (zh) 程序语言资源的翻译方法及装置
CN109032751A (zh) 一种虚拟机部署方法及omm虚拟机
CN111736884A (zh) 组件化方法和系统
CN111443959A (zh) 任务的执行方法、装置和服务器
CN107256167B (zh) 应用于应用系统迁移的升级控制方法及升级控制设备
CN111443920B (zh) 一种框架迁移方法及装置
CN114647548A (zh) 一种日志生成方法及装置
CN114637499B (zh) 可视化组件处理方法、装置、设备及介质
CN109460296B (zh) 一种处理器的资源分配方法、装置和存储介质
CN113296832A (zh) 数据处理方法、装置和电子设备
CN110333870B (zh) Simulink模型变量分配的处理方法、装置及设备
CN110891029A (zh) 家庭网络流量控制方法、装置和流量控制器
CN111399832A (zh) 一种页面编辑方法及装置
CN110647546A (zh) 第三方规则引擎生成方法及装置
CN117172206B (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