子类加载的方法、装置、存储介质及电子设备与流程

未命名 08-22 阅读:92 评论:0


1.本技术涉及计算机技术领域,具体涉及一种子类加载的方法、装置、存储介质及电子设备。


背景技术:

2.现有的子类加载方法,需要构造一个完整的子类对象,通过静态存储来管理一个关键字和一个完整的子类对象。这样的话新增子类需要手动添加一个关键字和一个完整的子类对象到这个静态存储空间中,需要耗费较大的存储空间来存储所有的子类信息。


技术实现要素:

3.本技术实施例提供一种子类加载的方法、装置、存储介质及电子设备,能够减小子类加载时所需要的存储空间。
4.第一方面,本技术实施例提供一种子类加载的方法,包括:
5.当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字;
6.获取子类的关键字与子类的创建方法的第一对应关系;
7.根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法;
8.根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。
9.第二方面,本技术实施例还提供一种子类加载的装置,包括:
10.第一获取单元,用于当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字;
11.第二获取单元,用于获取子类的关键字与子类的创建方法的第一对应关系;
12.确定单元,用于根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法;
13.加载单元,用于根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。
14.第三方面,本技术实施例还提供一种计算机可读的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本技术任一实施例提供的子类加载的方法。
15.第四方面,本技术实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本技术任一实施例提供的子类加载的方法。
16.本技术实施例提供的技术方案,当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字,获取子类的关键字与子类的创建方法的第一对应关系,根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法,根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。本技术在加载子类时,通过子类对应的关键字以及该关键字对应的子类的创建方法来加载子类,使得加载子类时消耗的内存少,
从而能够减小子类加载时所需要的存储空间。
附图说明
17.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为本技术实施例提供的子类加载的方法的第一种流程示意图。
19.图2为本技术实施例提供的子类加载的方法提供的类之间的关系示意图。
20.图3为本技术实施例提供的子类加载的装置的结构示意图。
21.图4为本技术实施例提供的电子设备的第一种结构示意图。
22.图5为本技术实施例提供的电子设备的第二种结构示意图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本技术的保护范围。
24.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。此外,本技术中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。
25.本技术实施例提供一种子类加载的方法,该子类加载的方法的执行主体可以是本技术实施例提供的子类加载的装置,或者集成了该子类加载的装置的电子设备,其中该子类加载的装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
26.需要说明的是,本技术基于c++(c plus plus),它是一种计算机高级程序设计语言,由c语言扩展升级而产生。
27.请参阅图1,图1为本技术实施例提供的子类加载的方法的第一种流程示意图。本技术实施例提供的子类加载的方法的具体流程可以如下:
28.s101、当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字。
29.其中,目标子类即待创建的子类,为了在描述上区分与其它已创建的子类,故将待创建的子类记为目标子类。
30.具体地,可以通过获取子类的关键字的方法,来获取目标子类的目标关键字。比如,可以创建一个类,通过这个类提供获取子类关键字的方法,例如,该方法可以是gettypename(),那么就可以根据这个类获取目标子类的目标关键字。可以在声明目标子类时,继承该类中提供的获取子类的关键字的方法,从而可以实现目标关键字的获取。
31.s102、获取子类的关键字与子类的创建方法的第一对应关系。
32.具体地,可以通过一个类去存放子类的关键字与子类的创建方法的第一对应关系,通过目标子类去继承这个类,即可根据c++语言的特性获取到该第一对应关系。
33.在一些实施例中,在流程“获取子类的关键字与子类的创建方法的第一对应关系”之前,还可以包括以下流程:
34.(1)获取子类的关键字;
35.比如,可以创建一个类,通过这个类提供获取子类关键字的方法,例如,该方法可以是gettypename(),那么就可以根据这个类获取子类的关键字。
36.(2)获取所述关键字对应的子类的创建方法;
37.例如,同样可以创建一个类,通过这个类提供获取子类的创建方法,例如该方法可以是类的静态模板函数,那么就可以根据这个类获取关键字对应的子类的创建方法。
38.在一些实施例中,可以仅提供一个类,该类中包括上述获取关键字的方法以及获取子类的创建方法,通过该一个类就可以实现获取子类的关键字,以及获取该关键字对应的子类的创建方法。
39.(3)根据所述关键字以及所述子类的创建方法,建立所述子类的关键字与子类的创建方法的第一对应关系。
40.在一些实施例中,可以在提供的类中添加一个静态变量的成员变量,其中,静态变量的构造方法是将子类的关键字和子类的创建方法关联起来,并添加至存储空间,也即,可以通过该添加的成员变量建立子类的关键字和子类的创建方法的第一对应关系。
41.在一些实施例中,流程“获取子类的关键字”,可以包括以下流程:
42.(1)创建第一预设类,所述第一预设类提供获取子类的关键字的方法;
43.比如,第一预设类的类名可以是vkreflect,创建类vkreflect,通过vkreflect提供gettypename()获取关键字的抽象方法(虚方法)。
44.(2)根据所述第一预设类获取子类的关键字。
45.根据上述vkreflect提供gettypename()获取关键字的抽象方法(虚方法)就可以获取子类的关键字。
46.在一些实施例中,流程“获取所述关键字对应的子类的创建方法”,可以包括以下流程:
47.(1)创建第二预设类,所述第二预设类提供子类的创建方法,所述第二预设类继承所述第一预设类;
48.比如,第一预设类的类名可以是createreflect,创建类createreflect,通过createreflect提供一个类的静态模板函数,构造任意子类的创建方法。设置createreflect继承vkreflect,以建立两个类之间的连接关系,使得createreflect能获取到vkreflect提供的子类的关键字,以及便于后续子类的关键字和子类的创建方法的第一对应关系的建立。
49.(2)根据所述第二预设类获取所述关键字对应的子类的创建方法。
50.根据上述createreflect提供的子类的创建方法就可以通过子类的关键字获取子类的创建方法。
51.在一些实施例中,在流程“建立所述子类的关键字与子类的创建方法的第一对应关系”之后,还可以包括以下流程:
52.(1)创建第三预设类;
53.例如,第三预设类的类名可以是reflectobjectfactory。
54.(2)通过所述第二预设类将所述子类的关键字与子类的创建方法的第一对应关系添加至所述第三预设类进行存储。
55.比如,可以利用c++语言特性,在createreflect中添加一个静态变量的成员变量,其中,静态变量的构造方法是将子类的关键字和子类的创建方法关联起来,并添加至reflectobjectfactory管理的静态存储空间中。
56.通过createreflect将子类的关键字以及子类的创建方法进行关联,得到关键字与子类的创建方法的第一对应关系,并将该关键字与子类的创建方法的第一对应关系添加至reflectobjectfactory的存储空间。
57.可以理解的,上述所创建的第一预设类、第二预设类以及第三预设类都是在流程s101之前就创建好的内容,因而在实现s101时,可以直接使用已经创建好的第一预设类、第二预设类以及第三预设类,该s101可以包括以下流程:
58.(1)创建第一预设宏;
59.比如,第一预设宏的宏可以是ref_declare_dyncreate(subclass)。
60.(2)通过所述第一预设宏对所述第一预设类提供的获取子类的关键字的方法进行定义;
61.其中,在通过第一预设宏对第一预设类提供的获取子类的关键字进行定义时,可以在声明目标子类时,同时设置所述目标子类继承第二预设类,使得第二预设类成为所述目标子类的基类,而由于第二预设类继承第一预设类,使得目标子类可以重载第一预设类中提供的获取子类的关键字的方法。
62.例如,设置目标子类的类名为arcframe,下面程序中所描述的具体子类即目标子类,通过ref_declare_dyncreate(subclass)定义获取子类的关键字的方法,可以通过以下程序实现:
63.struct arcframe:public createreflect《arcframe》//声明一个具体子类,并继承模板方法动态创建的子类方法
64.{
65.ref_declare_dyncreate(arcframe)//宏定义获得具体子类关键字的抽象方法
66.}
67.上述程序可以作为子类的头文件的内容。
68.(3)创建第二预设宏;
69.比如,第二预设宏可以是ref_implement_dyncreate(subclass)。
70.(4)通过所述第二预设宏调用所述第一预设类提供的获取子类的关键字的方法,获取所述目标子类对应的所述目标关键字。
71.通过ref_implement_dyncreate(subclass)实现获取子类的关键字的方法,可以通过以下程序实现:
72.ref_implement_dyncreate(arcframe)//宏实现获得具体子类关键字的抽象方法
73.void arcframe::test()//测试的函数名称
74.{
75.std::string keyname="struct arcframe";//声明具体子类的关键字
76.vkreflect*pobj=reflectobjectfactory::createreflectobj(keyname);//反射机制通过关键字获得创建具体子类的方法,创建该具体子类,返回基类的指针
77.std::string name=pobj-》gettypename();//父类虚方法获得具体子类的关键字,本例结果"struct arcframe"
78.arcframe*parcframe=dynamic_cast《arcframe*》(pobj);//父类动态转具体子类方法
79.}
80.上述程序可以作为子类的实现文件的内容,需要说明的是,后两行程序为测试程序,用于测试是否实现宏对应的功能。
81.可以理解的是,目标关键字是在reflectobjectfactory中获得的。
82.其中,本技术实施例中,通过reflectobjectfactory管理关键字和子类创建的方法的存储器映射(memory map),并通过reflectobjectfactory提供一个根据关键字创建具体子类的方法createreflectobj。createreflectobj的实现逻辑是在存储器映射中根据关键字检索,检索后调用对应关键字对应创建具体子类的方法。
83.s103、根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法。
84.可以理解的是,reflectobjectfactory中存储了子类的关键字与关键字对应的子类的创建方法的第一对应关系,具体地,可以通过createreflectobj在reflectobjectfactory中根据目标关键字进行检索,从而确定目标关键字对应的目标子类的创建方法。
85.s104、根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。
86.在一些实施例中,流程“根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类”,可以包括以下流程:
87.(1)通过所述第二预设类关联所述目标关键字以及所述目标子类的创建方法,得到目标关键字与目标子类的创建方法的第二对应关系;
88.例如,在createreflect中添加一个静态变量的成员变量,其中,静态变量的构造方法是将子类的关键字和子类的创建方法关联起来,并添加至reflectobjectfactory管理的静态存储空间。
89.通过createreflect将目标子类的目标关键字以及目标子类的创建方法进行关联,得到目标关键字与目标子类的创建方法的第二对应关系。
90.(2)通过所述第二预设类将所述第二对应关系添加到所述第三预设类,完成所述目标子类的加载。
91.根据createreflect将子类的关键字和子类的创建方法关联起来,并添加至reflectobjectfactory管理的静态存储空间,即可完成对所述目标子类的加载。
92.具体实施时,本技术不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
93.由上可知,本技术实施例提供的子类加载的方法,当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字,获取子类的关键字与子类的创建方法的第一对
应关系,根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法,根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。本技术在加载子类时,通过子类对应的关键字以及该关键字对应的子类的创建方法来加载子类,使得加载子类时消耗的内存少,从而能够减小子类加载时所需要的存储空间。
94.请参考图2,图2为本技术实施例提供的子类加载的方法提供的类之间的关系示意图。其中,设置第一预设类类名为vkreflect,设置第二预设类类名为createreflect,设置第三预设类为reflectobjectfactory,设置目标子类1的类名为element1。
95.通过图2可知,目标子类element1继承createreflect,createreflect又继承vkreflect,vkreflect调用reflectobjectfactory,使得目标子类element1通过vkreflect、createreflect建立与reflectobjectfactory的连接关系,通过连接关系,可以使得目标子类的目标关键字与创建目标子类的方法的第二对应关系自动被添加到reflectobjectfactory,从而实现目标子类的加载。
96.其中,基类vkreflect提供了gettypename()获取目标子类关键字的方法;基类createreflect提供了目标子类的创建方法;目标子类element1继承createreflect时,重载了vkreflect的gettypename()获取目标子类的关键字的方法。
97.通过上述实施例中提到的宏ref_declare_dyncreate简化了获取目标子类的关键字的方法定义的方式;宏ref_implement_dyncreate简化并实现目标子类的gettypename()方法,使每个目标子类都有其唯一的关键字。
98.本技术中利用c++语言特性,在createreflect中添加一个静态变量的成员变量,静态变量的构造方法是将目标子类的关键字和目标子类的创建方法添加至reflectobjectfactory中。
99.reflectobjectfactory主要是管理关键字和创建具体子类的具体方法的存储器映射,并提供一个根据目标关键字创建目标子类的方法createreflectobj。其中,createreflectobj的实现逻辑是在存储器映射中根据目标关键字检索,检索后调用该目标关键字对应的目标子类的创建方法。
100.综上,本技术实施例中,通过vkreflect提供的gettypename()获取关键字,并通过createreflect构造vkreflect获取的关键字对应的子类的创建方法;将子类的关键字,以及子类的创建方法添加到reflectobjectfactory;当获取到目标子类加载请求时,获取该目标子类对应的目标关键字,然后根据该目标关键字去reflectobjectfactory中通过createreflectobj检索其对应的目标子类的创建方法;根据检索到的目标子类的创建方法创建该目标子类,并继承reflectobjectfactory,从而实现该目标子类的加载。
101.可以理解的是,本技术实施例中提供的子类加载的方法,是通过三个不同的类:第一预设类、第二预设类,以及第三预设类去实现不同的功能,从而实现子类的加载。此外,还可以将第一预设类、第二预设类、以及第三预设类合并为一个类,通过这一个类提供本技术中提供的上述三个类所具有的功能,从而通过这一个类去实现子类的加载,或者还可以将本技术中提供的第三预设类提供的功能添加到第一预设类中,通过第二预设类继承第一预设类,从而通过两个类去实现子类的加载。
102.在一些实施例中还提供一种子类加载的装置。请参阅图3,图3为本技术实施例提供的子类加载的装置200的结构示意图。其中该子类加载的装置200应用于电子设备,该子
类加载的装置200包括第一获取单元201、第二获取单元202、确定单元203以及加载单元204,如下:
103.第一获取单元201,用于当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字;
104.第二获取单元202,用于获取子类的关键字与子类的创建方法的第一对应关系;
105.确定单元203,用于根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法;
106.加载单元204,用于根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。
107.在一些实施例中,子类加载的装置还可以包括第三获取单元,所述第三获取单元可以用于:获取子类的关键字;获取所述关键字对应的子类的创建方法;根据所述关键字以及所述子类的创建方法,建立所述子类的关键字与子类的创建方法的第一对应关系。
108.在一些实施例中,所述第三获取单元可以用于:创建第一预设类,所述第一预设类提供获取子类的关键字的方法;根据所述第一预设类获取子类的关键字。
109.在一些实施例中,所述第三获取单元可以用于:创建第二预设类,所述第二预设类提供子类的创建方法,所述第二预设类继承所述第一预设类;根据所述第二预设类获取所述关键字对应的子类的创建方法。
110.在一些实施例中,所述子类加载的装置还可以包括存储单元,所述存储单元可以用于:创建第三预设类;通过所述第二预设类将所述子类的关键字与子类的创建方法的第一对应关系添加至所述第三预设类进行存储。
111.在一些实施例中,所述第一获取单元201可以用于:创建第一预设宏;通过所述第一预设宏对所述第一预设类提供的获取子类的关键字的方法进行定义;创建第二预设宏;通过所述第二预设宏调用所述第一预设类提供的获取子类的关键字的方法,获取所述目标子类对应的所述目标关键字。
112.在一些实施例中,所述加载单元204可以用于,通过所述第二预设类关联所述目标关键字以及所述目标子类的创建方法,得到目标关键字与目标子类的创建方法的第二对应关系;通过所述第二预设类将所述第二对应关系添加到所述第三预设类,完成所述目标子类的加载。
113.应当说明的是,本技术实施例提供的子类加载的装置与上文实施例中的子类加载的方法属于同一构思,通过该子类加载的装置可以实现子类加载的方法实施例中提供的任一方法,其具体实现过程详见子类加载的方法实施例,此处不再赘述。
114.由上可知,本技术实施例提出的子类加载的装置,通过第一获取单元201当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字,通过第二获取单元202获取子类的关键字与子类的创建方法的第一对应关系,通过确定单元203根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法,通过加载单元204根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类,使得本技术能够减小子类加载时所需要的存储空间。
115.本技术实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图4,图4为本技术实施例提供的电子设备的第一种结构示意图。电子设备300
包括处理器301和存储器302。其中,处理器301与存储器302电性连接。
116.处理器301是电子设备300的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器302内的计算机程序,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
117.存储器302可用于存储计算机程序和数据。存储器302存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器301通过调用存储在存储器302的计算机程序,从而执行各种功能应用以及子类加载的。
118.在本实施例中,电子设备300中的处理器301会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的计算机程序,从而实现各种功能:
119.当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字;
120.获取子类的关键字与子类的创建方法的第一对应关系;
121.根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法;
122.根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。
123.在一些实施例中,请参阅图5,图5为本技术实施例提供的电子设备的第二种结构示意图。电子设备300还包括:射频电路303、显示屏304、控制电路305、输入单元306、音频电路307、传感器308以及电源309。其中,处理器301分别与射频电路303、显示屏304、控制电路305、输入单元306、音频电路307、传感器308以及电源309电性连接。
124.射频电路303用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
125.显示屏304可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
126.控制电路305与显示屏304电性连接,用于控制显示屏304显示信息。
127.输入单元306可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元306可以包括指纹识别模组。
128.音频电路307可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路307包括麦克风。所述麦克风与所述处理器301电性连接。所述麦克风用于接收用户输入的语音信息。
129.传感器308用于采集外部环境信息。传感器308可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
130.电源309用于给电子设备300的各个部件供电。在一些实施例中,电源309可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
131.虽然图中未示出,电子设备300还可以包括摄像头、蓝牙模块等,在此不再赘述。
132.在本实施例中,电子设备300中的处理器301会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的计算机程序,从而实现各种功能:
133.当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字;
134.获取子类的关键字与子类的创建方法的第一对应关系;
135.根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法;
136.根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。
137.在一些实施例中,处理器301在执行所述获取子类的关键字与子类的创建方法的第一对应关系之前,还可以执行:获取子类的关键字;获取所述关键字对应的子类的创建方法;根据所述关键字以及所述子类的创建方法,建立所述子类的关键字与子类的创建方法的第一对应关系。
138.在一些实施例中,处理器301在执行获取子类的关键字时,可以执行:创建第一预设类,所述第一预设类提供获取子类的关键字的方法;根据所述第一预设类获取子类的关键字。
139.在一些实施例中,处理器301在执行获取所述关键字对应的子类的创建方法时,可以执行:创建第二预设类,所述第二预设类提供子类的创建方法,所述第二预设类继承所述第一预设类;根据所述第二预设类获取所述关键字对应的子类的创建方法。
140.在一些实施例中,处理器301在执行建立所述子类的关键字与子类的创建方法的第一对应关系之后,还可以执行:创建第三预设类;通过所述第二预设类将所述子类的关键字与子类的创建方法的第一对应关系添加至所述第三预设类进行存储。
141.在一些实施例中,处理器301在执行获取所述目标子类对应的目标关键字时,还可以执行:创建第一预设宏;通过所述第一预设宏对所述第一预设类提供的获取子类的关键字的方法进行定义;创建第二预设宏;通过所述第二预设宏调用所述第一预设类提供的获取子类的关键字的方法,获取所述目标子类对应的所述目标关键字。
142.在一些实施例中,处理器301在执行根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类时,还可以执行:通过所述第二预设类关联所述目标关键字以及所述目标子类的创建方法,得到目标关键字与目标子类的创建方法的第二对应关系;通过所述第二预设类将所述第二对应关系添加到所述第三预设类,完成所述目标子类的加载。
143.本技术实施例还提供一种计算机可读的存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的子类加载的方法。
144.需要说明的是,对本技术实施例所述子类加载的方法而言,本领域普通技术人员可以理解实现本技术实施例所述子类加载的方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在存储器中,并被至少一个处理器执行,在执行过程中可包括如所述子类加载的方法的实施例的流程。其中,所述的存储介质可以包括但不限于:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
145.对本技术实施例的所述子类加载的装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
146.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部
分,可以参见上文针对子类加载的方法的详细描述,此处不再赘述。
147.以上对本技术实施例所提供的一种子类加载的方法、装置、存储介质以及电子设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。

技术特征:
1.一种子类加载的方法,其特征在于,包括:当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字;获取子类的关键字与子类的创建方法的第一对应关系;根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法;根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类。2.如权利要求1所述的子类加载的方法,其特征在于,在所述获取子类的关键字与子类的创建方法的第一对应关系之前,还包括:获取子类的关键字;获取所述关键字对应的子类的创建方法;根据所述关键字以及所述子类的创建方法,建立所述子类的关键字与子类的创建方法的第一对应关系。3.如权利要求2所述的子类加载的方法,其特征在于,所述获取子类的关键字,包括:创建第一预设类,所述第一预设类提供获取子类的关键字的方法;根据所述第一预设类获取子类的关键字。4.如权利要求3所述的子类加载的方法,其特征在于,所述获取所述关键字对应的子类的创建方法,包括:创建第二预设类,所述第二预设类提供子类的创建方法,所述第二预设类继承所述第一预设类;根据所述第二预设类获取所述关键字对应的子类的创建方法。5.如权利要求4所述的子类加载的方法,其特征在于,在建立所述子类的关键字与子类的创建方法的第一对应关系之后,还包括:创建第三预设类;通过所述第二预设类将所述子类的关键字与子类的创建方法的第一对应关系添加至所述第三预设类进行存储。6.如权利要求5所述的子类加载的方法,其特征在于,所述获取所述目标子类对应的目标关键字,包括:创建第一预设宏;通过所述第一预设宏对所述第一预设类提供的获取子类的关键字的方法进行定义;创建第二预设宏;通过所述第二预设宏调用所述第一预设类提供的获取子类的关键字的方法,获取所述目标子类对应的所述目标关键字。7.如权利要求6所述的子类加载的方法,其特征在于,所述根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类,包括:通过所述第二预设类关联所述目标关键字以及所述目标子类的创建方法,得到目标关键字与目标子类的创建方法的第二对应关系;通过所述第二预设类将所述第二对应关系添加到所述第三预设类,完成所述目标子类的加载。8.一种子类加载的装置,其特征在于,包括用于执行如权利要求1至7任一项所述的子类加载的方法的单元。
9.一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至7任一项所述的子类加载的方法。10.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至7任一项所述的子类加载的方法。

技术总结
本申请涉及一种子类加载的方法、装置、存储介质及电子设备,该子类加载方法包括:当获取到目标子类的加载请求时,获取所述目标子类对应的目标关键字,获取子类的关键字与子类的创建方法的第一对应关系,根据所述目标关键字以及所述第一对应关系,确定所述目标子类的创建方法,根据所述目标关键字以及所述目标子类的创建方法加载所述目标子类,可以使加载子类时消耗的内存少,从而能够减小子类加载时所需要的存储空间。要的存储空间。要的存储空间。


技术研发人员:殷红伟 张珣 欧阳宏
受保护的技术使用者:深圳市万翼数字技术有限公司
技术研发日:2023.05.05
技术公布日:2023/8/21
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐