一种适配虚拟机中多种参数调用函数的方法、装置及介质与流程



1.本发明涉及虚拟机的适配调用技术领域,尤其涉及一种适配虚拟机中多种参数调用函数方法、装置及介质。


背景技术:



2.在一些情况下,需要通过c++来调用虚拟机中的某个函数,而此函数则可能存在多个参数,并且会存在有的函数只有一个参数,有的则由多个参数。希望能够通过一个接口能够适配所有的函数调用。
3.因此,在实际应用中需要编写一个接口则可以适配0个,一个,二个,多个参数的情况。


技术实现要素:



4.本发明提供了一种适配虚拟机中多种参数调用函数的方法,基础类存储了虚拟机中具体的方法,通过模板函数存储多种参数调用函数数据,并能够将任意个参数存储到一个数据中,从而能够适配虚拟机中任意的方法,以及任意参数个数和类型都可以进行适配。
5.第一方面,本发明实施例提供了一种适配虚拟机中多种参数调用函数的方法,包括:
6.创建基础类,以存储不同的虚拟机方法;
7.创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;
8.创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。
9.优选的是,所述创建基础类,包括:
10.成员变量,存储虚拟机中的方法类型;
11.返回接口,以返回所述方法类型的成员变量;
12.判断接口,以判断任一方法类型成员变量是否存在。
13.优选的是,还包括建立实际调用接口,其包括:
14.定义object类型的array数组;
15.建立数组调用接口,以调用所述array数组,并创建一个object数组;
16.在所述object数组中建立计算函数,以获得参数的个数;
17.建立递归存储接口,以通过递归调用所述计算函数,逐步递增所有参数,并更新存储到array数组;
18.建立返回函数,以返回更新后的array数组。
19.优选的是,所述判断接口,具体包括:
20.采用重载括号运算符,通过判断任一方法类型成员变量的指针是否为空,以判断对应的方法类型成员变量是否存在。
21.优选的是,所述模板类包括:
22.参数接口,以设置多种参数调用函数数据;
23.序号接口,其用于将所述多种参数调用函数数据进行序号标记;
24.其中,所述模板类继承自所述基础类,所述多种参数调用函数数据包括:具有一个参数的调用函数数据、具有二个参数的调用函数数据和具有多个参数的调用函数数据。
25.优选的是,所述序号接口包括:单个参数序号接口和复数参数序号接口;
26.其中,所述复数参数序号接口,包括:
27.建立调用函数数据中第一个参数数据与id序号的关联函数;
28.建立调用函数数据中其他数据与id序号的递增关联函数;
29.并更新到到object类型的array数组中;
30.其中,所述单个参数序号接口,包括:
31.调用函数数据中参数数据与id序号的关联函数;
32.将所述关联函数模板化;
33.建立所述数组的返回接口,并更新到所述object类型的array数组中。
34.优选的是,所述创建辅助类,具体包括:所述创建辅助类,具体包括:
35.建立转换变量函数;
36.将多种参数调用函数数据存储到变量中;
37.通过获取参数调用函数数据对应的id序号,获取所述变量对应的函数调用方法;
38.执行所述函数调用方法,并传入实例对象和参数的数组。
39.第二方面,本发明实施例提供了一种适配虚拟机中多种参数调用函数装置,包括:
40.方法类型模块,其用于建立调用所述虚拟机中方法类型的调用接口;
41.参数模块,其用于建立模板类,以提供模板函数接口,所述模板函数接口包含多种参数调用函数数据,返回结果为object数组,以支持任一函数调用方法类型;
42.接口模块,其用于创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。
43.第三方面,本发明实施例提供了一种电子设备,包括应用处理器和存储器,其特征在于,所述处理器用于实现所述存储器中存储得计算机管理程序式时实现所述的适配虚拟机中多种参数调用函数装置。
44.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于,所述计算机管理类程序被处理器执行时实现所述的适配虚拟机中多种参数调用函数装置。
45.有益效果
46.本发明提供了一种适配虚拟机中多种参数调用函数的方法,基础类存储了虚拟机中具体的方法,通过模板函数存储多种参数调用函数数据,并能够将任意个参数存储到一个数据中,从而能够适配虚拟机中任意的方法,以及任意参数个数和类型都可以进行适配。
附图说明
47.图1为本发明所述的适配虚拟机中多种参数调用函数的方法流程图。
48.图2为本发明所述的适配虚拟机中多种参数调用函数的装置实施例的模块图。
49.图3为本发明所述的适配虚拟机中多种参数调用函数的装置的硬件结构示意图。
50.图4为本发明实施例提供的一种可能的电子设备的实施例示意图。
51.图5为本发明实施例提供的一种可能的计算机可读存储介质的实施例示意图。
具体实施方式
52.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.需要说明的是,在本发明的描述中,术语“中”、“上”、“下”、“横”、“内”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
54.此外,还需要说明的是,在本发明的描述中,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本发明中的具体含义。
55.如图1所示,基于背景技术提出的技术问题,本发明提供了一种适配虚拟机中多种参数调用函数的方法,包括如下步骤:
56.步骤s110、创建基础类,以存储不同的虚拟机方法;具体包括:成员变量,存储虚拟机中的方法类型;返回接口,以返回方法类型的成员变量;判断接口,以判断任一方法类型成员变量是否存在。即要对虚拟机中的方法进行封装,具体的说,在一个优选实施例中,可以由如下代码实现:
57.class vbase{
58.vmethoid mid_;
59.vmethoid getmid(){returnmid_;}
60.explicit operatorbool()const{
61.returnmid_!=null;}
62.其中,vbase为封装类用于封装基础的虚拟机中的方法,methoid mid_表示成员变量,以存储虚拟机中的方法类型;vmethoid getmid(){return mid_表示成员函数,explicit operatorbool()const表示判断接口;return mid_!=null通过判断mid_是否为空以判断方法是否存在。
63.在一个优选实施例中,为了和其他运算符保持一致,使用重载括号运算符,从而调用者可以和判断指针是否为空的逻辑一样来判断方法是否存在。
64.需要特别说明的是,本实施例能够通过一个接口来调用所有的虚拟机中的方法,封装了对虚拟机方法的访问存储和调用,同时也提供了其是否合法和存在的接口,实现了基于封装可以便于传输和调用存储不同的虚拟机方法的有益效果。
65.步骤s120、创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;
66.首先,封装基础类的所有功能,以使基础类内的方法调用具备通用性;
67.在一个具体实施例中,具体的基础类的方法封装,可以由如下代码实现:
68.template《typename...args》;
69.class vmethod《object(args...)》;
70.public vbase
71.其中,typename...args表示多个模板参数明参数个数是可以适配任意个参数个数,vmethod表述模板类,且继承自vbase基础类,因此具备了vbase封装类所有的功能。
72.需要特别说明的是,模板类具有多个模板参数typename...args,表明参数个数是可以适配任意个参数个数,从而实现了本实施例的基础功能,实现了适配任意多个参数个数的有益效果。
73.建立参数接口,以设置多种参数调用函数数据,并将参数数据存储到object类型的array数组中;
74.建立序号接口,其用于将多种参数调用函数数据进行序号标记,并更新到object类型的array数组中;
75.其中,多种参数调用函数数据包括:具有一个参数的调用函数数据、具有二个参数的调用函数数据和具有多个参数的调用函数数据;且模板类继承自基础类。
76.具体的说,编写一个接口设置参数数据:
77.static void set(objectarray array,arg arg0,args...args)
78.其中,函数set提供了一个参数objectarray,array表示是一个object类型的数组,用于将参数存储到array中。
79.其中模板参数arg0表示第一个参数。模板参数args...args则表示任意多个参数个数。此接口的实现则是将第一个参数存储起来,同时继续对后续任意多个参数执行相同的递归逻辑来存储参数到array中。
80.array-》setelement(id,arg0)表示把第一个参数存储到array这个数组的id的序号中。argssave《id+1,args...》::set(array,args...);表示继续对后续的其他参数调用set方法来继续存储。
81.其中id+1则表示下一个参数的序号则需要在前一个参数的序号上增加1。第一个参数则id值是0,后续依次递增。
82.其中,复数参数序号接口,具体的包括:
83.建立调用函数数据中第一个参数数据与id序号的关联函数;array-》setelement(id,arg0);
84.建立调用函数数据中其他数据与id序号的递增关联函数argssave《id+1,args...》::set(array,args...);
85.并更新到数组中到object类型的array数组中,
86.具体的为:array-》setelement(id,arg);
87.其中,array表示数组,element表示关联函数,id表示序号,arg0表示第一个参数数据;argssave表示递增关联函数,args.表示第一个参数数据的后续参数数据;
88.然后设计一个模板类其可以传入任意多个参数个数。
89.template《int id,typename...args》
90.classargssave;
91.设计其模板特化接口。
92.template《int id,typenamearg,typename...args》
93.其中,argssave是一个模板类,typename与参数个数相对应,
94.作为一个优选实施例,具有任意个模板参数class argssave《id,arg,args...》{此模板类argssav将参数进行了拆分成2部分数据,一个是把任意个模板参数拆分出来一个参数数据的一个模板特化类。
95.编写一个接口设置参数数据。
96.static void set(objectarray array,arg arg0,args...args){
97.其中,函数set提供了一个参数objectarray,array表示是一个object类型的数组,用于将参数存储到array中。
98.其中模板参数arg0表示第一个参数。模板参数args...args则表示任意多个参数个数。此接口的实现则是将第一个参数存储起来,同时继续对后续任意多个参数执行相同的递归逻辑来存储参数到array中。
99.array-》setelement(id,arg0)表示把第一个参数存储到array这个数组的id的序号中。argssave《id+1,args...》::set(array,args...);表示继续对后续的其他参数调用set方法来继续存储。
100.其中id+1则表示下一个参数的序号则需要在前一个参数的序号上增加1。第一个参数则id值是0,后续依次递增。
101.本步骤s120通过模板和递归的实现,可以自动的实现依次对每个参数执行存储操作,即array-》setelement(id,arg);,从而最终都存储到数组array中。
102.需要特别说明的是,模板类中具有多个模板参数typename...args,表明参数个数是可以适配任意个参数个数。从而能够满足基础功能适配任意多个参数个数。且在参数个数是不确定的前提下,设计一个辅助功能用于的任意个参数的存储类型,实现了多种参数个数数据的编号存储的有益效果。
103.在一个优选实施例中,没有参数的情况,还需要额外的实现一个无参数的模板特化实现,即建立单个参数序号接口,包括:
104.调用函数数据中参数数据与id序号的关联函数template《int id》;
105.将所述关联函数模板化structargssave《id》;
106.建立所述数组的返回接口static void set(objectarray,array)。
107.其中,template表示关联函数,template《int id》只有一个序号参数,struct表示关联函数模板化,argssave《id》模板特化出只有一个序号的模板类。static void set(objectarray array)只有一个数组array。
108.需要特别说明的是,建立单个参数序号接口,参数通过递归调用,逐步减少参数最终则会成为没有参数的情况,实现了通过建立单个参数序号接口,建立递归程序的出口的有益效果。
109.在另一实施中,还包括:建立实际调用接口,其包括:
110.定义object类型的array数组;template《typename...args》
111.建立数组调用接口,以调用array数组,并创建一个object数组;objectarray aveargs(args...args)
112.在object数组中建立计算函数size of...(args),以获得参数的个数;auto array=createobjectarray(sizeof...(args));
113.建立递归存储接口,argssave《0,args...》::set(array,args...),以通过递归调用argssave逐步递增所有参数,并更新存储到array数组;
114.建立返回函数return array,以返回更新后的array数组。
115.其中,sizeof...(args)表示计算函数,来计算得到参数的个数。返回值array则是一个可以存储对应参数个数的object数组,argssave《0,args...》::set(array,args...)表示递归存储接口,以通过递归调用argssave逐步递增所有参数,并更新存储到array数组中,eturn array表示返回函数,函数接口是一个模板函数,提供支持任意个参数个数,并且返回一个objectarray类型,表明其是一个object数组,存储了多个object数据。
116.需要特别说明的是,本实施例中建立实际调用接口,能够计算参数的个数,实现了多种参数个数数据的编号存储的有益效果。
117.步骤s130、创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。
118.优选的是,创建辅助类,具体包括:
119.使用object类型建立转换变量函数,其包括虚拟机中的函数调用对象self和多种参数调用函数数据;
120.将多种参数调用函数数据存储到objectarray变量allargs中;
121.通过虚拟机的接口getfunction可以通过方法的id接口来获取对应的任一函数调用方法function;
122.其中,任一函数调用方法function中,传入实例对象self和参数的数组allargs。
123.需要特别说明的是,执行调用方法function,其中传入实例对象self,和所有参数的数组allargs实现了适配一种虚拟机中方法调用所有情况的有益效果。
124.具体的说,包括如下步骤:
125.local《object》operator()(object self,args...args)const;
126.auto allargs=saveargs(args...);
127.function(self,allargs);
128.调用基础功能saveargs来将任意多个function=getfunction(getmid());参数存储到一个objectarray变量allargs中;
129.其中,通过虚拟机的接口getfunction可以通过方法的id接口来获取对应的方法function。
130.其中,local《object》operator()(object self,args...args)const;表示建立虚拟机函数调用对象,参数的数据是一个对象本身self,使用object类型表明此可以支持任意的虚拟机中的函数调用对象。参数args...args表明是可以支持任意个参数个数。auto allargs=saveargs(args...);表示封装参数,function=getfunction(getmid())基于本类存储了具体的虚拟机的方法id,我们则可以通过方法id来得到对应的方法,其中,具体
的方法通过虚拟机的接口getfunction可以通过方法的id接口来获取对应的方法function,function(self,allargs)表示传入实例对象self和所有参数的数组allargs。
131.需要特别说明的是,本实施例基于vbase封装了调用虚拟机的方法,该类存储了虚拟机中具体的方法,同时可以存储任意方法。而对于参数本文则设计了一个辅助类,能够将任意个参数存储到一个数据中,而基于一个数据和之前存储的方法可以实现函数的调用,从而能够适配虚拟机中任意的方法,以及该方法有任意参数个数和类型都可以进行适配。
132.本发明实施例提供的提适配虚拟机中多种参数调用函数的方法,具有下列有益效果,基础类存储了虚拟机中具体的方法,通过模板函数存储多种参数调用函数数据,并能够将任意个参数存储到一个数据中,从而能够适配虚拟机中任意的方法,以及任意参数个数和类型都可以进行适配。
133.图2为本发明适配虚拟机中多种参数调用函数的装置实施例的模块图,如2所示,本发明实施例中还提供了适配虚拟机中多种参数调用函数的装置一个实施例,该装置包括:方法类型模块210,其用于建立调用所述虚拟机中方法类型的调用接口;参数模块220用于建立模板类,以提供模板函数接口,所述模板函数接口包含多种参数调用函数数据,返回结果为object数组,以支持任一函数调用方法类型;接口模块230用于创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。
134.图2从模块化功能实体的角度对本技术实施例中的适配虚拟机中多种参数调用函数的装置进行了描述,下面从硬件处理的角度对本技术实施例中的阻止系统函数调用功能的装置进行详细描述,图3为本发明实施例提供的适配虚拟机中多种参数调用函数的装置的硬件结构示意图;请参阅图3,本发明实施例中的适配虚拟机中多种参数调用函数的装置实施例的模块图300为一个实施例,包括:
135.输入装置301、输出装置302、处理器303和存储器304(其中处理器303的数量可以一个或多个,图3中以一个处理器303为例)。在本发明的一些实施例中,输入装置301、输出装置302、处理器303和存储器304可通过总线或其它方式连接,其中,图3中以通过总线连接为例。
136.其中,通过调用存储器304存储的操作指令,处理器303,用于执行如下步骤:
137.创建基础类,以存储不同的虚拟机方法;
138.创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;
139.创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用.
140.通过调用存储器304存储的操作指令,处理器303,还用于执行图1对应的实施例中的任一方式。
141.图4为本发明实施例提供的一种可能的电子设备的实施例示意图,如4所示。
142.在另一实施例中,本发明还提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤。
143.创建基础类,以存储不同的虚拟机方法;
144.创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;
145.创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。
146.由于本实施例所介绍的电子设备为实施本发明实施例中,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本技术所欲保护的范围。
147.图5为本发明实施例提供的一种可能的计算机可读存储介质的实施例示意图,请参阅图5。
148.如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:
149.创建基础类,以存储不同的虚拟机方法;
150.创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;
151.创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。
152.在具体实施过程中,该计算机程序511被处理器执行时可以实现图1对应的实施例中任一实施方式。
153.需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
154.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
155.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
156.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
157.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
158.本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1对应实施例中的阻止系统函数调用的方法中的流程。
159.所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
160.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
161.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
162.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
163.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
164.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccess memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
165.本发明提供了一种android平台调用so功能的健壮性优化方法,建立转换接口以
将c++层代码的异常对象转换为java代码的异常对象,将c++的异常转换为java的异常,不会导致程序退出,避免程序崩溃。
166.至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

技术特征:


1.一种适配虚拟机中多种参数调用函数的方法,其特征在于,包括:创建基础类,以存储不同的虚拟机方法;创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。2.根据权利要求1所述的适配虚拟机中多种参数调用函数的方法,其特征在于,所述创建基础类,包括:成员变量,存储虚拟机中的方法类型;返回接口,以返回所述方法类型的成员变量;判断接口,以判断任一方法类型成员变量是否存在。3.根据权利要求1或2所述的适配虚拟机中多种参数调用函数的方法,其特征在于,还包括建立实际调用接口,其包括:定义object类型的array数组;建立数组调用接口,以调用所述array数组,并创建一个object数组;在所述object数组中建立计算函数,以获得参数的个数;建立递归存储接口,以通过递归调用所述计算函数,逐步递增所有参数,并更新存储到array数组;建立返回函数,以返回更新后的array数组。4.根据权利要求2所述的适配虚拟机中多种参数调用函数的方法,其特征在于,所述判断接口,具体包括:采用重载括号运算符,通过判断任一方法类型成员变量的指针是否为空,以判断对应的方法类型成员变量是否存在。5.根据权利要求3所述的适配虚拟机中多种参数调用函数的方法,其特征在于,所述模板类包括:参数接口,以设置多种参数调用函数数据;序号接口,其用于将所述多种参数调用函数数据进行序号标记;其中,所述模板类继承自所述基础类,所述多种参数调用函数数据包括:具有一个参数的调用函数数据、具有二个参数的调用函数数据和具有多个参数的调用函数数据。6.根据权利要求5所述的适配虚拟机中多种参数调用函数的方法,其特征在于,所述序号接口包括:单个参数序号接口和复数参数序号接口;其中,所述复数参数序号接口,包括:建立调用函数数据中第一个参数数据与id序号的关联函数;建立调用函数数据中其他数据与id序号的递增关联函数;并更新到到object类型的array数组中;其中,所述单个参数序号接口,包括:调用函数数据中参数数据与id序号的关联函数;将所述关联函数模板化;建立所述数组的返回接口,并更新到所述object类型的array数组中。
7.根据权利要求6所述的适配虚拟机中多种参数调用函数的方法,其特征在于,所述创建辅助类,具体包括:建立转换变量函数;将多种参数调用函数数据存储到变量中;通过获取参数调用函数数据对应的id序号,获取所述变量对应的函数调用方法;执行所述函数调用方法,并传入实例对象和参数的数组。8.一种适配虚拟机中多种参数调用函数装置,其特征在于,包括:方法类型模块,其用于建立调用所述虚拟机中方法类型的调用接口;参数模块,其用于建立模板类,以提供模板函数接口,所述模板函数接口包含多种参数调用函数数据,返回结果为object数组,以支持任一函数调用方法类型;接口模块,其用于创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用。9.一种电子设备,包括应用处理器和存储器,其特征在于,所述处理器用于实现所述存储器中存储得计算机管理程序式时实现如权利要求1-7中任一项所述的适配虚拟机中多种参数调用函数装置。10.一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于,所述计算机管理类程序被处理器执行时实现如权利要求1-7中任意一项所述的适配虚拟机中多种参数调用函数装置。

技术总结


本发明提供了一种适配虚拟机中多种参数调用函数的方法,包括:创建基础类,以存储不同的虚拟机方法;创建模板类,以提供模板函数,且包含多种参数调用函数数据,返回结果为object数组,以实现任一虚拟机方法的函数调用;创建辅助类,封装所述参数数据,将任一种参数数据转换为一个数据的接口,实现多种参数函数调用函数的适配调用,通过模板函数存储多种参数调用函数数据,并能够将任意个参数存储到一个数据中,从而能够适配虚拟机中任意的方法,以及任意参数个数和类型都可以进行适配。任意参数个数和类型都可以进行适配。任意参数个数和类型都可以进行适配。


技术研发人员:

周志刚

受保护的技术使用者:

武汉斗鱼网络科技有限公司

技术研发日:

2021.06.07

技术公布日:

2022/12/22

本文发布于:2024-09-21 21:55:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/43722.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:参数   函数   所述   方法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议