CN109947488A - 通用功能模块的对象初始化方法、装置、设备和存储介质 - Google Patents
通用功能模块的对象初始化方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN109947488A CN109947488A CN201910208554.3A CN201910208554A CN109947488A CN 109947488 A CN109947488 A CN 109947488A CN 201910208554 A CN201910208554 A CN 201910208554A CN 109947488 A CN109947488 A CN 109947488A
- Authority
- CN
- China
- Prior art keywords
- initialization
- function
- direct broadcasting
- broadcasting room
- general
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种通用功能模块的对象初始化方法、装置、设备和存储介质。该方法包括:确定待初始化对象的初始化参数和待初始化对象所在的直播间的直播间类型标识,初始化参数包括待初始化对象的对象标识;在直播间的生命周期起始函数中,以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象获得初始化对象;其中,初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。通过上述技术方案,高效且简便地实现通用功能模块的对象初始化,提高对象初始化代码的可维护性和可扩展性。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种通用功能模块的对象初始化方法、装置、设备和存储介质。
背景技术
在基于Android系统的直播应用软件中存在多个直播间,其中有些直播间之间存在具有相同功能的通用功能模块,例如通用答题模块。每个通用功能模块在其所属的直播间中正常运行之前均需执行其对应对象的初始化(即对象初始化)操作。
现有技术中实现通用功能模块的对象初始化的方法是:考虑到不同直播间中通用功能模块的对象初始化流程存在微小差异,故在每个直播间内均编写该通用功能模块的对象初始化的业务逻辑代码。这样会使得整个直播应用软件中存在大量相同的初始化业务逻辑代码,造成代码冗余,消耗多余的系统内存;也会使得在需要修改初始化业务逻辑时必须多个直播间进行统一的修改,降低对象初始化代码的可维护性和可扩展性。
发明内容
本发明实施例提供一种通用功能模块的对象初始化方法、装置、设备和存储介质,以高效且简便地实现通用功能模块的对象初始化,降低系统内存消耗,提高对象初始化代码的可维护性和可扩展性。
第一方面,本发明实施例提供了一种通用功能模块的对象初始化方法,包括:
确定待初始化对象的初始化参数和所述待初始化对象所在的直播间的直播间类型标识,其中,所述初始化参数包括所述待初始化对象的对象标识;
在所述直播间的生命周期起始函数中,以所述直播间类型标识和所述初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据所述直播间类型标识初始化所述待初始化对象,获得初始化对象;
其中,所述初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,所述通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
第二方面,本发明实施例还提供了一种通用功能模块的对象初始化装置,该装置包括:
初始化参数确定模块,用于确定待初始化对象的初始化参数和所述待初始化对象所在的直播间的直播间类型标识,其中,所述初始化参数包括所述待初始化对象的对象标识;
对象初始化模块,用于在所述直播间的生命周期起始函数中,以所述直播间类型标识和所述初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据所述直播间类型标识初始化所述待初始化对象,获得初始化对象;
其中,所述初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,所述通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的通用功能模块的对象初始化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的通用功能模块的对象初始化方法。
本发明实施例通过预先定义初始化包裹器类及其内部函数输入参数为祖先类型的Java可变参数的通用初始化函数,使得该通用初始化函数能够兼容不同类型的直播间中通用功能模块初始化入参的差异性,从而使得该通用初始化函数可以实现不同直播间中通用功能模块的对象初始化。通过在直播间的生命周期起始函数中,以直播间的直播间类型标识和该直播间中待初始化对象的初始化参数为函数输入参数,调用初始化包裹器对象的通用初始化函数,以依据直播间类型标识初始化待初始化对象获得初始化对象。实现了仅通过一个通用初始化函数的调用便完成不同类型的直播间中通用功能模块的对象初始化,避免了在不同直播间中均设置初始化业务逻辑代码,达到了减少代码冗余,降低系统内容消耗,及提高对象初始化代码的可维护性和可扩展性的技术效果。
附图说明
图1是本发明实施例一中的一种通用功能模块的对象初始化方法的流程图;
图2是本发明实施例二中的一种通用功能模块的对象初始化方法的流程图;
图3是本发明实施例三中的一种通用功能模块的对象初始化装置的结构示意图;
图4是本发明实施例四中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例提供的通用功能模块的对象初始化方法可适用于初始化多个直播间中相同的通用功能模块对应的对象的情形。该方法可以由通用功能模块的对象初始化装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在安装有基于Android系统的直播应用软件的电子设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图1,本实施例的方法包括:
S110、确定待初始化对象的初始化参数和待初始化对象所在的直播间的直播间类型标识。
其中,待初始化对象是指直播间中需要被初始化的通用功能模块对应的对象,该对象是通用功能模块的功能实现的实际执行者。初始化参数是指对象初始化所需要的参数,其根据每个直播间及其内的通用功能模块来确定。由于本发明实施例中的初始化操作设置在直播间被创建时执行,故初始化参数中至少需要包含待初始化对象的对象标识,以便明确初始化的对象(或模块)。直播间类型标识是指表征直播间类型的标识符,其可以是数字、字母和特殊符号中的至少一种。
具体地,在执行待初始化对象的初始化操作之前,需要先获得待初始化对象的初始化参数及其对应的直播间类型标识。这两个信息的获取方式,可以是预先设置每个直播间的直播间类型标识以及其中每个对象的初始化参数,在需要获取这些信息时,通过诸如直播间标识的查找索引来查询获取;也可以是接收用户的输入而获取。
示例性地,确定待初始化对象所在的直播间的直播间类型标识包括:依据预先定义的直播间类型枚举类,确定待初始化对象所在的直播间对应的直播间类型枚举值,作为直播间类型标识。
具体地,相关技术中区分不同直播间类型最常用的方法可能是用数字或者一个变量等方式来进行区分,这样的缺陷是可能会导致类型标识冲突或者不同类型的数字相同的可能性,从而就会引起一系列的初始化异常的问题。鉴于此,本发明实施例中预先定义一个枚举类型的直播间类型枚举类,用于唯一表示直播间类型。该直播间类型枚举类的定义方法示例如下:
该直播间类型枚举类的名称是ACTIVITY_TYPE,其中可以定义直播应用软件中所有的涉及到的直播间类型信息,例如ACTIVITY_PLAYER表示半屏直播间,ACTIVITY_MOBILE表示颜值直播间(含封面信息的直播间),ACTIVITY_FULL_SCREEN表示全屏直播间等。
具体实施时,可以根据待初始化对象所属的直播间的直播间类型,从上述自定义的直播间类型枚举类中确定出该直播间对应的直播间类型枚举值为ACTIVITY_PLAYER,或ACTIVITY_MOBILE,或ACTIVITY_FULL_SCREEN等,之后便将确定出的直播间类型枚举值作为该直播间的直播间类型标识。
S120、在直播间的生命周期起始函数中,以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象,获得初始化对象。
其中,生命周期起始函数onCreat为Android系统中每个对象创建时系统自动调用的函数,在该函数中可以自定义一些在创建对象时便需要实现的功能实现业务逻辑。初始化包裹器对象为预先定义的初始化包裹器类的实例化对象。初始化包裹器类就是为了实现对象初始化而定义的类,其内部包含实现对象初始化的函数,即通用初始化函数。初始化包裹器类及通用初始化函数的定义可以示例如下:
其中,InitWrapper为初始化包裹器类名,onInit为通用初始化函数的函数名。onInit函数的输入参数有两个,第一个为直播间类型标识,第二个为初始化参数。为了使得直播间类型标识具有全局唯一性,上述第一个输入参数设置为上述定义的直播间类型枚举类型ACTIVITY_TYPE的变量activityType,以此来区分不同的直播间。为了使该通用初始化函数可以兼容不同直播间后续初始化所传入的参数的不同,将第二个输入参数设置为祖先类型Object类型的Java可变参数…args。这是因为,第一,Object类是一个顶层的抽象类,根据面向对象的特点,Object类型可用于接收所有类型的对象,也就是说Object类型的输入参数可以用于存储任意类型的对象信息。第二,Java可变参数可以传递任意多个Object类型的参数信息,这样就可以使得初始化包裹器类能够根据不同的直播间传递不同数量的信息到初始化包裹器中,这样的设计就能够提高初始化包裹器类的动态扩展性。
具体地,本发明实施例中将通用功能模块的对象初始化的业务逻辑(即通用初始化函数的调用)设置在直播间(一个直播间对应为一个活动窗口对象activity)的生命周期起始函数中,这样在创建每个直播间时便会自动执行对象初始化的业务逻辑,从而使得通用功能模块对应的对象在所有需要初始化该对象的直播间中都能够被初始化。
具体实施时,在待初始化对象所属的直播间的生命周期起始函数onCreat的执行过程中,会传入S110中获得的直播间类型标识和初始化参数(即第一输入参数)来调用初始化包裹器对象中的通用初始化函数onInit,通过该通用初始化函数onInit的执行来完成待初始化对象的初始化操作,获得初始化对象。由于不同类型的直播间可能对应不同的对象初始化流程,故通用初始化函数onInit中按照不同的直播间类型来设置不同的初始化业务逻辑。那么,在执行待初始化对象的初始化操作时,便是根据其对应的直播间类型标识来执行合适的初始化业务逻辑,以实现正确的初始化。
示例性地,通用初始化函数通过如下方式实现依据直播间类型标识初始化待初始化对象,获得初始化对象的功能:依据直播间类型标识判断直播间类型是否是半屏直播间或颜值直播间;若是,则基于预设初始化逻辑初始化待初始化对象,获得初始化对象。
具体地,假设半屏直播间和颜值直播间中有通用功能模块,而全屏直播间中没有设置通用功能模块(全屏时很多模块无法显示和操作),那么半屏直播间和颜值直播间就需要有对象初始化逻辑,而全屏直播间中便不需要对象初始化逻辑。据此,在通用初始化函数的实现中,首先通过条件判定语句来判定第一输入参数中的activityType是否是ACTIVITY_PLAYER或ACTIVITY_MOBILE,具体代码实现示例可以为:if(activityType==ACTIVITY_PLAYER)和if(activityType==ACTIVITY_MOBILE)。如果条件成立就执行具体的通用功能模块的业务相关的初始化流程,获得初始化对象。如果条件不成立,则无需执行上述通用功能模块的初始化流程,便也不会存在初始化对象。
本实施例的技术方案,通过预先定义初始化包裹器类及其内部函数输入参数为祖先类型的Java可变参数的通用初始化函数,使得该通用初始化函数能够兼容不同类型的直播间中通用功能模块初始化入参的差异性,从而使得该通用初始化函数可以实现不同直播间中通用功能模块的对象初始化。通过在直播间的生命周期起始函数中,以直播间的直播间类型标识和该直播间中待初始化对象的初始化参数为函数输入参数,调用初始化包裹器对象的通用初始化函数,以依据直播间类型标识初始化待初始化对象获得初始化对象。实现了仅通过一个通用初始化函数的调用便完成不同类型的直播间中通用功能模块的对象初始化,避免了在不同直播间中均设置初始化业务逻辑代码,达到了减少代码冗余,降低系统内容消耗,及提高对象初始化代码的可维护性和可扩展性的技术效果。
实施例二
本实施例在上述实施例一的基础上,增加了“获得目标访问对象”的相关步骤。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的通用功能模块的对象初始化方法包括:
S210、确定待初始化对象的初始化参数和待初始化对象所在的直播间的直播间类型标识。
S220、在直播间的生命周期起始函数中,以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象,获得初始化对象。
S230、以目标访问对象对应的目标类为第二输入参数,通过初始化包裹器类调用对象获取函数,从存储各初始化对象的对象存储集合中获得目标访问对象。
其中,目标访问对象是一个直播间中所有初始化对象中需要被访问的初始化对象。目标类是指目标访问对象所属的类。
对象获取函数是初始化包裹器类中定义的一个函数,其用于获取由通用初始化函数初始化而获得的初始化对象。该对象获取函数的定义可以示例为:Public static TgetController(Class<T>className)。其中,getController为对象获取函数的函数名;getController函数具有公有权限修饰符,以便其他类具有访问该函数的权限;getController函数具有静态类型修饰符,以便其他功能模块对应的对象可以直接通过初始化包裹器类来访问该函数;getController函数的返回值是一个泛型参数T(即getController函数具有泛型修饰符),之所以设计成泛型参数T是为了提高该函数的使用范围,并且该函数的输入参数是一个Class类型但是支持泛型T的参数className,也就是说返回值的类型和入参参数的类型一致就可以满足泛型的条件。
对象存储集合是初始化包裹器类中的集合,用于存储由通用初始化函数获得的所有未被销毁的初始化对象。该对象存储集合由预先定义的键值对类型的集合更新数据而获得,键值对中键的类型为类Class类型,键后续用于存储初始化对象所属的类,键值对中值的类型为祖先类型Object(也称为基类类型),值后续用于存储初始化对象。对象存储集合cacheMap的定义可以示例为:Map<Class,Object>cacheMap。由于该对象存储集合用于存储由通用初始化函数获得的所有未被销毁的初始化对象,所以其由通用初始化函数和通用销毁函数获得。该通用销毁函数也是初始化包裹器类中定义的函数,其与通用初始化函数对应设置,用于销毁初始化对象,定义代码示例为:Public void onDestory(){销毁业务逻辑}。
具体地,由于初始化对象是在创建直播间时获取的,故其作用域为直播间对应的活动窗口类activity,该直播间中的其他功能模块对应的其他类无法直接访问初始化对象,那么其他类与初始化对象之间无法实现交互。所以,为了实现初始化对象与其直播间中其他功能模块之间的交互,本发明实施例中在初始化包裹器类中设置了对象获取函数和对象存储集合。
在获取了初始化对象之后,且执行对象获取函数的调用之前,应当先执行对象存储集合的处理操作。根据对象存储集合的设置意义可知,需要将通用初始化函数所得的初始化对象存入对象存储集合,故直接在通用初始化函数中增加将初始化对象存储至对象存储集合的业务逻辑。又考虑到初始化对象是直播间中的对象,其在直播间销毁时也应销毁,所以在直播间生命周期结束函数onDestroy(直播间销毁时系统自动调用的函数)中调用初始化包裹器对象中的通用销毁函数。但是对象存储集合是初始化包裹器类中定义的集合对象,其不会随着直播间的销毁而销毁,所以应当增加对象存储集合中已销毁对象的删除操作,才可确保对象存储集合中存储的对象数据均是未被销毁的有效的初始化对象,故在通用销毁函数中增加从对象存储集合中删除正在被销毁的初始化对象的业务逻辑。
示例性地,通用初始化函数通过如下方式实现获得对象存储集合的功能:在获得初始化对象之后,以初始化对象对应的存储类和初始化对象为第四输入参数,通过初始化包裹器对象调用对象存储函数,将存储类和初始化对象存储至对象存储集合。
其中,存储类是初始化对象对应的类。对象存储函数是初始化包裹器类中定义的函数,其用于向对象存储集合中存入对象数据,其函数定义示例为:PublicvoidcacheObject(Class myClass,Object myObject){},cacheObject为对象存储函数的函数名,其输入参数分别为类类型的myClass和祖先Object类型的myObject,意味着对象存储函数可以接收任意类型的对象进行存储。
在S220获得初始化对象之后,根据对象存储函数的定义,在通用初始化函数的内部,将该初始化对象对应的存储类和该初始化对象作为对象存储函数的函数输入参数(即第四输入参数),调用初始化包裹器对象中的对象存储函数,将两个输入参数以键值对形式存储至对象存储集合中。
示例性地,对象存储函数通过如下方式实现将存储类和初始化对象存储至对象存储集合的功能:判断第四输入参数是否为空;若否,则判断对象存储集合是否为空;若是,则初始化对象存储集合;若否,则以存储类和初始化对象为第六输入参数,通过对象存储集合调用元素存储函数,将存储类和初始化对象存储至对象存储集合。
在对象存储函数的具体实现中,首先对函数输入参数进行基本的校验操作,即通过myClass==null判断输入的类是否为空,并且通过myObject==null判定输入的对象是否为空。如果有任意一个为空,此时校验失败,直接通过return语句来终止对象存储操作。如果均不为空,接着判断对象存储集合cacheMap是否为空。如果为空,则按照示例代码cacheMap=new HashMap<Class,Object>()初始化对象存储集合。如果不为空,说明对象存储集已经存在且被初始化。之后,调用对象存储集合cacheMap中元素存储函数,即cacheMap.put(myClass,myObject),将对象存储函数传入的存储类和初始化对象(即第六输入参数)存储至对象存储集合中。
示例性地,通用销毁函数通过如下方式实现获得对象存储集合的功能:以待销毁对象对应的销毁类为第五输入参数,通过初始化包裹器对象调用对象删除函数,从对象存储集合中删除销毁类所属的键值对,更新对象存储集合。
其中,待销毁对象是指需要被销毁的初始化对象。销毁类是待销毁对象对应的类。对象删除函数是初始化包裹器类中定义的函数,其用于从对象存储集合中删除对象数据,其函数定义示例为:Public void removeCache(Class myClass){},removeCache为对象删除函数的函数名,其输入参数分别为类类型的myClass。
在通用销毁函数中销毁待销毁对象之前,先将待销毁对象对应的销毁类作为对象删除函数的函数输入参数(即第五输入参数),调用初始化包裹器对象中的对象删除函数,将销毁类及其对应的待销毁对象(即销毁类所属的键值对)从对象存储集合中删除,以便更新对象存储集合,使其不包含要销毁的初始化对象。
示例性地,对象删除函数通过如下方式实现从对象存储集合中删除销毁类所属的键值对的功能:判断第五输入参数是否为空;若否,则以第五输入参数为第七输入参数,通过对象存储集合调用元素删除函数,将销毁类所属的键值对从对象存储集合中删除。
在对象删除函数的实现中,首先通过myClass==null判断输入的类是否为空。如果为空,则直接通过return语句来终止对象删除操作。如果不为空,则调用对象存储集合cacheMap中元素删除函数,即cacheMap.remove(myClass),将销毁类及其对应的待销毁对象从对象存储集合中删除。
通过上述的操作,能够获得数据更新后的对象存储集合。此时,需要与初始化对象交互的其他类实例化生成的其他对象便可以通过初始化包裹器类及其中的对象获取函数来访问对象存储集合,进而获得需要交互的初始化对象,即目标访问对象。具体实施时,以目标类为对象获取函数的函数输入参数(即第二输入参数),直接通过初始化包裹器类调用其中的对象获取函数,来从对象存储集合中获得目标类对应的初始化对象,作为目标访问对象。
示例性地,对象获取函数通过如下方式实现从存储各初始化对象的对象存储集合中获得目标访问对象的功能:判断第二输入参数是否为空;若否,则获取对象存储集合中的各存储键信息,并判断各存储键信息中是否存在与第二输入参数匹配的键信息;若是,则以第二输入参数为第三输入参数,调用对象存储集合的值获取函数,获得与第三输入参数对应的存储值信息,作为目标访问对象。
在对象获取函数的具体实现中,首先对第二输入参数进行校验处理,即通过className==null的方式判断第二输入参数是否为空。如果为空,则直接通过return语句来终止对象获取操作。如果不为空,则通过遍历的方式来遍历对象存储集合cacheMap,每次遍历时获取其存储的键信息(即存储键信息),并比较获得的存储键信息和第二输入参数是否一致。如果遍历后没有一个存储键信息能够与第二输入参数匹配上,则直接通过returnnull的方式来返回一个空对象,以表示查询失败或者没有该对象实例化过。如果找到一个比较结果为一致的存储键信息,则将第二输入参数作为对象存储集合中值获取函数的函数输入参数(即第三输入参数),调用对象存储集合中的值获取函数,即cacheMap.get(className),从对象存储集合中获取匹配一致的存储键信息对应的值信息(即存储值信息)。由于对象存储集合中值信息的类型为祖先Object类型,即获得的存储值信息为Object类型,所以在将存储值信息作为返回值返回之前,需要将其强制类型转换为className对应的数据类型。之后,将数据类型转换之后的存储值信息返回,作为目标访问对象。
本实施例的技术方案,通过初始化包裹器对象中的通用初始化函数和通用销毁函数对对象存储集合进行访问及处理,能够获得仅存储了所有由通用初始化函数获得,且未销毁的初始化对象的对象存储集合,保证了后续获得的目标访问对象的有效性。通过以目标访问对象对应的目标类为第二输入参数,通过初始化包裹器类调用对象获取函数,从存储各初始化对象的对象存储集合中获得目标访问对象,实现了目标访问对象的快速获取,进一步提高了初始化对象的访问灵活性和对象初始化业务逻辑的可扩展性。
以下是本发明实施例提供的通用功能模块的对象初始化装置的实施例,该装置与上述各实施例的通用功能模块的对象初始化方法属于同一个发明构思,在通用功能模块的对象初始化装置的实施例中未详尽描述的细节内容,可以参考上述通用功能模块的对象初始化方法的实施例。
实施例三
本实施例提供一种通用功能模块的对象初始化装置,参见图3,该装置具体包括:
初始化参数确定模块310,用于确定待初始化对象的初始化参数和待初始化对象所在的直播间的直播间类型标识,其中,初始化参数包括待初始化对象的对象标识;
对象初始化模块320,用于在直播间的生命周期起始函数中,以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象,获得初始化对象;
其中,初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
可选地,初始化参数确定模块310具体用于:
依据预先定义的直播间类型枚举类,确定待初始化对象所在的直播间对应的直播间类型枚举值,作为直播间类型标识。
可选地,对象初始化模块320包括通用初始化函数执行子模块,用于通过如下方式实现依据直播间类型标识初始化待初始化对象,获得初始化对象的功能:
依据直播间类型标识判断直播间类型是否是半屏直播间或颜值直播间;
若是,则基于预设初始化逻辑初始化待初始化对象,获得初始化对象。
在上述装置的基础上,该装置还包括:目标访问对象获取模块,用于:
在以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象,获得初始化对象之后,以目标访问对象对应的目标类为第二输入参数,通过初始化包裹器类调用对象获取函数,从存储各初始化对象的对象存储集合中获得目标访问对象;
其中,对象获取函数具有公有权限修饰符、静态类型修饰符和泛型修饰符,且对象获取函数的函数输入参数类型为支持泛型的类类型;对象存储集合由通用初始化函数和通用销毁函数获得,且对象存储集合为键值对类型,键值对中键的类型为类类型,键值对中值的类型为祖先类型。
可选地,目标访问对象获取模块包括对象获取函数执行子模块,用于通过如下方式实现从存储各初始化对象的对象存储集合中获得目标访问对象的功能:
判断第二输入参数是否为空;
若否,则获取对象存储集合中的各存储键信息,并判断各存储键信息中是否存在与第二输入参数匹配的键信息;
若是,则以第二输入参数为第三输入参数,调用对象存储集合的值获取函数,获得与第三输入参数对应的存储值信息,作为目标访问对象。
可选地,通用初始化函数执行子模块还用于通过如下方式实现获得对象存储集合的功能:
在获得初始化对象之后,以初始化对象对应的存储类和初始化对象为第四输入参数,通过初始化包裹器对象调用对象存储函数,将存储类和初始化对象存储至对象存储集合;
目标访问对象获取模块还包括通用销毁函数执行子模块,用于通过如下方式实现获得对象存储集合的功能:
以待销毁对象对应的销毁类为第五输入参数,通过初始化包裹器对象调用对象删除函数,从对象存储集合中删除销毁类所属的键值对,更新对象存储集合。
进一步地,对象获取函数执行子模块还用于通过如下方式实现将存储类和初始化对象存储至对象存储集合的功能:
判断第四输入参数是否为空;
若否,则判断对象存储集合是否为空;
若是,则初始化对象存储集合;
若否,则以存储类和初始化对象为第六输入参数,通过对象存储集合调用元素存储函数,将存储类和初始化对象存储至对象存储集合。
通过本发明实施例三的一种通用功能模块的对象初始化装置,实现了仅通过一个通用初始化函数的调用便完成不同类型的直播间中通用功能模块的对象初始化,避免了在不同直播间中均设置初始化业务逻辑代码,达到了减少代码冗余,降低系统内容消耗,及提高对象初始化代码的可维护性和可扩展性的技术效果。
本发明实施例所提供的通用功能模块的对象初始化装置可执行本发明任意实施例所提供的通用功能模块的对象初始化方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述通用功能模块的对象初始化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
参见图4,本实施例提供了一种设备400,其包括:一个或多个处理器420;存储装置410,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器420执行,使得一个或多个处理器420实现本发明实施例所提供的通用功能模块的对象初始化方法,包括:
确定待初始化对象的初始化参数和待初始化对象所在的直播间的直播间类型标识,其中,初始化参数包括待初始化对象的对象标识;
在直播间的生命周期起始函数中,以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象,获得初始化对象;
其中,初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
当然,本领域技术人员可以理解,处理器420还可以实现本发明任意实施例所提供的通用功能模块的对象初始化方法的技术方案。
图4显示的设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图4所示,该设备400包括处理器420、存储装置410、输入装置430和输出装置440;设备中处理器420的数量可以是一个或多个,图4中以一个处理器420为例;设备中的处理器420、存储装置410、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线450连接为例。
存储装置410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的通用功能模块的对象初始化方法对应的程序指令/模块(例如,通用功能模块的对象初始化装置中的初始化参数确定模块和对象初始化模块)。
存储装置410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种通用功能模块的对象初始化方法,该方法包括:
确定待初始化对象的初始化参数和待初始化对象所在的直播间的直播间类型标识,其中,初始化参数包括待初始化对象的对象标识;
在直播间的生命周期起始函数中,以直播间类型标识和初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据直播间类型标识初始化待初始化对象,获得初始化对象;
其中,初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的通用功能模块的对象初始化方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的通用功能模块的对象初始化方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种通用功能模块的对象初始化方法,其特征在于,包括:
确定待初始化对象的初始化参数和所述待初始化对象所在的直播间的直播间类型标识,其中,所述初始化参数包括所述待初始化对象的对象标识;
在所述直播间的生命周期起始函数中,以所述直播间类型标识和所述初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据所述直播间类型标识初始化所述待初始化对象,获得初始化对象;
其中,所述初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,所述通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
2.根据权利要求1所述的方法,其特征在于,确定所述待初始化对象所在的直播间的直播间类型标识包括:
依据预先定义的直播间类型枚举类,确定所述待初始化对象所在的直播间对应的直播间类型枚举值,作为所述直播间类型标识。
3.根据权利要求1所述的方法,其特征在于,所述通用初始化函数通过如下方式实现依据所述直播间类型标识初始化所述待初始化对象,获得初始化对象的功能:
依据所述直播间类型标识判断所述直播间类型是否是半屏直播间或颜值直播间;
若是,则基于预设初始化逻辑初始化所述待初始化对象,获得初始化对象。
4.根据权利要求1所述的方法,其特征在于,在以所述直播间类型标识和所述初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据所述直播间类型标识初始化所述待初始化对象,获得初始化对象之后,还包括:
以目标访问对象对应的目标类为第二输入参数,通过所述初始化包裹器类调用对象获取函数,从存储各所述初始化对象的对象存储集合中获得所述目标访问对象;
其中,所述对象获取函数具有公有权限修饰符、静态类型修饰符和泛型修饰符,且所述对象获取函数的函数输入参数类型为支持泛型的类类型;所述对象存储集合由所述通用初始化函数和通用销毁函数获得,且所述对象存储集合为键值对类型,键值对中键的类型为类类型,键值对中值的类型为祖先类型。
5.根据权利要求4所述的方法,其特征在于,所述对象获取函数通过如下方式实现从存储各所述初始化对象的对象存储集合中获得所述目标访问对象的功能:
判断所述第二输入参数是否为空;
若否,则获取所述对象存储集合中的各存储键信息,并判断各所述存储键信息中是否存在与所述第二输入参数匹配的键信息;
若是,则以所述第二输入参数为第三输入参数,调用所述对象存储集合的值获取函数,获得与所述第三输入参数对应的存储值信息,作为所述目标访问对象。
6.根据权利要求4所述的方法,其特征在于,所述通用初始化函数通过如下方式实现获得所述对象存储集合的功能:
在所述获得所述初始化对象之后,以所述初始化对象对应的存储类和所述初始化对象为第四输入参数,通过所述初始化包裹器对象调用对象存储函数,将所述存储类和所述初始化对象存储至所述对象存储集合;
所述通用销毁函数通过如下方式实现获得所述对象存储集合的功能:
以待销毁对象对应的销毁类为第五输入参数,通过所述初始化包裹器对象调用对象删除函数,从所述对象存储集合中删除所述销毁类所属的键值对,更新所述对象存储集合。
7.根据权利要求6所述的方法,其特征在于,所述对象存储函数通过如下方式实现将所述存储类和所述初始化对象存储至所述对象存储集合的功能:
判断所述第四输入参数是否为空;
若否,则判断所述对象存储集合是否为空;
若是,则初始化所述对象存储集合;
若否,则以所述存储类和所述初始化对象为第六输入参数,通过所述对象存储集合调用元素存储函数,将所述存储类和所述初始化对象存储至所述对象存储集合。
8.一种通用功能模块的对象初始化装置,其特征在于,包括:
初始化参数确定模块,用于确定待初始化对象的初始化参数和所述待初始化对象所在的直播间的直播间类型标识,其中,所述初始化参数包括所述待初始化对象的对象标识;
对象初始化模块,用于在所述直播间的生命周期起始函数中,以所述直播间类型标识和所述初始化参数为第一输入参数,通过初始化包裹器对象调用通用初始化函数,以依据所述直播间类型标识初始化所述待初始化对象,获得初始化对象;
其中,所述初始化包裹器对象为预先定义的初始化包裹器类的实例化对象,所述通用初始化函数的一个函数输入参数为祖先类型的Java可变参数。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的通用功能模块的对象初始化方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的通用功能模块的对象初始化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910208554.3A CN109947488B (zh) | 2019-03-19 | 2019-03-19 | 通用功能模块的对象初始化方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910208554.3A CN109947488B (zh) | 2019-03-19 | 2019-03-19 | 通用功能模块的对象初始化方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947488A true CN109947488A (zh) | 2019-06-28 |
CN109947488B CN109947488B (zh) | 2022-05-10 |
Family
ID=67010167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910208554.3A Active CN109947488B (zh) | 2019-03-19 | 2019-03-19 | 通用功能模块的对象初始化方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947488B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750315A (zh) * | 2019-12-23 | 2020-02-04 | 武汉斗鱼鱼乐网络科技有限公司 | Android系统中的类加载方法、装置、设备和存储介质 |
CN115134613A (zh) * | 2021-03-29 | 2022-09-30 | 武汉斗鱼网络科技有限公司 | 一种直播间信息的获取方法及相关装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5849014A (ja) * | 1981-09-16 | 1983-03-23 | 東京電力株式会社 | ラチエツト式皮剥工具 |
WO2004095298A2 (en) * | 2003-03-28 | 2004-11-04 | Intel Corporation | Method and apparatus for detecting memory device interface |
US20080301602A1 (en) * | 2004-12-10 | 2008-12-04 | Synopsys, Inc. | Method and apparatus for performing formal verification using data-flow graphs |
CN107623555A (zh) * | 2016-07-14 | 2018-01-23 | 工业和信息化部电信研究院 | 一种通用型通信仿真平台的实现方法及装置 |
CN108989828A (zh) * | 2018-07-09 | 2018-12-11 | 武汉斗鱼网络科技有限公司 | 一种多对象缓存方法、终端装置及存储介质 |
CN109302639A (zh) * | 2018-09-30 | 2019-02-01 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的分发方法、装置、终端和存储介质 |
CN109462769A (zh) * | 2018-10-30 | 2019-03-12 | 武汉斗鱼网络科技有限公司 | 直播间挂件显示方法、装置、终端及计算机可读介质 |
-
2019
- 2019-03-19 CN CN201910208554.3A patent/CN109947488B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5849014A (ja) * | 1981-09-16 | 1983-03-23 | 東京電力株式会社 | ラチエツト式皮剥工具 |
WO2004095298A2 (en) * | 2003-03-28 | 2004-11-04 | Intel Corporation | Method and apparatus for detecting memory device interface |
US20080301602A1 (en) * | 2004-12-10 | 2008-12-04 | Synopsys, Inc. | Method and apparatus for performing formal verification using data-flow graphs |
CN107623555A (zh) * | 2016-07-14 | 2018-01-23 | 工业和信息化部电信研究院 | 一种通用型通信仿真平台的实现方法及装置 |
CN108989828A (zh) * | 2018-07-09 | 2018-12-11 | 武汉斗鱼网络科技有限公司 | 一种多对象缓存方法、终端装置及存储介质 |
CN109302639A (zh) * | 2018-09-30 | 2019-02-01 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的分发方法、装置、终端和存储介质 |
CN109462769A (zh) * | 2018-10-30 | 2019-03-12 | 武汉斗鱼网络科技有限公司 | 直播间挂件显示方法、装置、终端及计算机可读介质 |
Non-Patent Citations (2)
Title |
---|
ANJALI BHAVAN ET AL: "Stacked Generalization with Wrapper-Based Feature Selection for Human Activity Recognition", 《 2018 IEEE SYMPOSIUM SERIES ON COMPUTATIONAL INTELLIGENCE (SSCI)》 * |
王伟: "基于Android的直播商城的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750315A (zh) * | 2019-12-23 | 2020-02-04 | 武汉斗鱼鱼乐网络科技有限公司 | Android系统中的类加载方法、装置、设备和存储介质 |
CN115134613A (zh) * | 2021-03-29 | 2022-09-30 | 武汉斗鱼网络科技有限公司 | 一种直播间信息的获取方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109947488B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625452A (zh) | 流量回放方法和系统 | |
CN108228188A (zh) | 一种视图组件处理方法、电子设备及可读存储介质 | |
US11995453B2 (en) | Method and apparatus for generating image file and computer-readable storage medium | |
CN104484223A (zh) | 一种安卓系统应用关闭方法和装置 | |
CN109947488A (zh) | 通用功能模块的对象初始化方法、装置、设备和存储介质 | |
CN106843977A (zh) | 一种应用程序自启动的处理方法、装置及移动终端 | |
CN111371809A (zh) | 一种基于反向代理架构的服务器及gis服务访问控制方法 | |
CN113722114A (zh) | 一种数据服务的处理方法、装置、计算设备及存储介质 | |
CN104281488A (zh) | 服务器引擎的实现方法和系统 | |
CN107450907A (zh) | 指纹模组的兼容方法、移动终端及具有存储功能的装置 | |
CN110096543B (zh) | 应用程序的数据操作方法、装置、服务器和介质 | |
CN116954680A (zh) | 存储系统的插件更新方法、装置、设备、介质及程序产品 | |
US10944587B2 (en) | Event processing associated with a smart device | |
CN101588404A (zh) | 针对通用集成电路卡上多应用管理的实现方法及装置 | |
CN101751292B (zh) | Atc系统中一种实现多机关键数据一致性功能的方法 | |
CN106874088B (zh) | 一种应用程序自启动的处理方法、装置及移动终端 | |
CN116578984A (zh) | 一种业务数据的风险管控方法、系统、设备和介质 | |
CN106911730A (zh) | 一种云盘服务器访问迁移方法和装置 | |
CN106445595B (zh) | 插件的Application对象的构建方法及装置 | |
CN109819330A (zh) | 直播间跳转方法、装置、设备和存储介质 | |
CN109005448A (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN108810644A (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN115730016B (zh) | 数据同步方法、系统、装置、计算机设备和存储介质 | |
CN110442404A (zh) | 一种对象释放方法、装置、设备和存储介质 | |
CN108848147A (zh) | Snmp代理设备注册方法、装置、计算机设备和存储介质 |
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 |