一种查找类的方法和装置制造方法及图纸

技术编号:14116727 阅读:57 留言:0更新日期:2016-12-07 23:04
本公开是关于一种查找类的方法和装置,属于电子技术领域。所述方法包括:当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;如果在所述目标程序的类库中查找到所述目标类的类数据,则基于所述目标类的类数据,对所述目标类进行加载,如果在所述目标程序的类库中未查找到所述目标类的类数据,则在所述目标程序的上级程序的类库中查找所述目标类的类数据,基于所述目标类的类数据,对所述目标类进行加载。采用本公开,可以防止程序无法正常运行。

【技术实现步骤摘要】

本公开是关于电子
,尤其是关于一种查找类的方法和装置
技术介绍
随着电子技术的发展,各种各样的终端得到了广泛的应用,相应的终端上的应用程序的种类越来越多、功能越来越丰富。目前,应用程序包含有主程序和插件程序,其中,主程序的类库中和插件程序的类库中都会包含有一些本身需要加载的类,其中,类是计算机程序中可以实现某种操作的数据类型。目前,采用java语言编写的程序(比如安卓系统)是根据类名查找需要加载的类的类数据,进而,基于类数据对需要加载的类进行加载,其中,加载过程是:首先在最顶级程序的类库中查找需要加载的类的类数据,如果查找到,则查找结束并对需要加载的类进行加载,如果未查找到,再在下一级程序的类库中查找需要加载的类的类数据,如果查找到,则查找结束并对需要加载的类进行加载,如果未查找到,则按照上述方法向下逐级查找需要加载的类的类数据,直到查找到为止。例如,对于安卓系统而言,假设包括三级程序,分别是系统程序、应用程序的主程序、插件程序,其中,系统程序是应用程序的主程序和插件程序的上级程序,应用程序的主程序是插件程序的上级程序,当插件需要加载类(可以称需要加载的类为目标类)时,首先在系统程序的类库中查找目标类的类数据,若找到的话,查找结束并对目标类进行加载,若没有,再在应用程序的主程序的类库中查找目标类的类数据,若找到的话,查找结束并对目标类进行加载,若没有,再在插件程序的类库中查找目标类的类数据,对目标类进行加载。在实现本公开的过程中,专利技术人发现至少存在以下问题:当应用程序的主程序的类库和插件程序的类库中包含相同类名,但类数据不同的类(比如两者的版本不同,或者执行的功能不同),且插件需要加载的是插件程序的类库中的类时,基于上述查找类的方法,插件加载的将会是主程序的类库中的类,从而,导致程序无法正常运行。
技术实现思路
为了克服相关技术中存在的问题,本公开提供了一种查找类的方法和装置。所述技术方案如下:根据本公开实施例的第一方面,提供了一种查找类的方法,所述方法包括:当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;如果在所述目标程序的类库中查找到所述目标类的类数据,则基于所述目标类的类数据,对所述目标类进行加载,如果在所述目标程序的类库中未查找到所述目标类的类数据,则在所述目标程序的上级程序的类库中查找所述目标类的类数据,基于所述目标类的类数据,对所述目标类进行加载。可选的,所述目标程序为应用程序的插件程序,所述上级程序为所述应用程序的主程序和系统程序。这样,当应用程序的插件程序的类库中与主程序的类库中包含相同类名而类数据不同的类,且插件需要加载的是插件程序的类库中的类时,可以优先查找到插件程序的类库中的类,从而,可以防止插件程序无法正常运行。可选的,所述在所述目标程序的类库中查找所述目标类的类数据,包括:如果所述目标类为非系统类,则在所述目标程序的类库中查找所述目标类的类数据;所述方法还包括:如果所述目标类为系统类,则在系统程序的类库中查找所述目标类的类数据;基于所述目标类的类数据,对所述目标类进行加载。这样,当目标程序加载的目标类为系统类时,可以直接在系统程序的类库中查找,可以防止目标程序也包含该目标类时,加载错误的类。可选的,所述方法还包括:当检测到为所述目标程序分配类加载器的触发事件发生时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器;所述当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据,包括:当接收到目标程序对目标类的加载指令时,通过所述当前可用的类加载器在所述目标程序的类库中查找所述目标类的类数据。可选的,所述当检测到为所述目标程序分配类加载器的触发事件发生时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器,包括:当接收到所述目标程序的加载指令时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器。根据本公开实施例的第二方面,提供了一种查找类的装置,所述装置包括:查找模块,用于当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;加载模块,用于如果在所述目标程序的类库中查找到所述目标类的类数据,则基于所述目标类的类数据,对所述目标类进行加载,如果在所述目标程序的类库中未查找到所述目标类的类数据,则在所述目标程序的上级程序的类库中查找所述目标类的类数据,基于所述目标类的类数据,对所述目标类进行加载。可选的,所述目标程序为应用程序的插件程序,所述上级程序为所述应用程序的主程序和系统程序。可选的,所述查找模块,用于:如果所述目标类为非系统类,则在所述目标程序的类库中查找所述目标类的类数据;所述查找模块,还用于:如果所述目标类为系统类,则在系统程序的类库中查找所述目标类的类数据;所述加载模块,还用于:基于所述目标类的类数据,对所述目标类进行加载。可选的,所述装置还包括:设置模块,用于当检测到为所述目标程序分配类加载器的触发事件发生时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器;所述查找模块,用于:当接收到目标程序对目标类的加载指令时,通过所述当前可用的类加载器在所述目标程序的类库中查找所述目标类的类数据。可选的,所述设置模块,用于:当接收到所述目标程序的加载指令时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器。根据本公开实施例的第三方面,提供了一种查找类的装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;如果在所述目标程序的类库中查找到所述目标类的类数据,则基于所述目标类的类数据,对所述目标类进行加载,如果在所述目标程序的类库中未查找到所述目标类的类数据,则在所述目标程序的上级程序的类库中查找所述目标类的类数据,基于所述目标类的类数据,对所述目标类进行加载。本公开的实施例提供的技术方案可以包括以下有益效果:本公开实施例中,终端当接收到目标程序对目标类的加载指令时,可以优先在目标程序的类库中查找目标类的类数据,如果在目标程序的类库中查找到目标类的类数据,则可以对目标类进行加载,如果在目标程序的类库中未查找到目标类的类数据,则可以再在目标程序的上级程序的类库中查找,这样,当目标程序需要加载的类是自身的类库中包含的类时,首先找到的是目标程序的类库中的类,从而,可以防止程序无法正常运行。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。在附图中:图1是根据一示例性实施例示出的一种查找类的方法的流程图;图2(a)是根据一示例性实施例示出的一种查找顺序示意图;图2(b)是根据一示例性实施例示出的一种查找顺序示意图;图3是根据一示例性实施例示出的一种查找类的装置的示意图;图4是根据一示例性实施例示出的一种查找类的装置的示意图;图5是根据一示例性实施例示出的一种终端的结构示意图。通过上述附图,已示出本本文档来自技高网
...
一种查找类的方法和装置

【技术保护点】
一种查找类的方法,其特征在于,所述方法包括:当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;如果在所述目标程序的类库中查找到所述目标类的类数据,则基于所述目标类的类数据,对所述目标类进行加载,如果在所述目标程序的类库中未查找到所述目标类的类数据,则在所述目标程序的上级程序的类库中查找所述目标类的类数据,基于所述目标类的类数据,对所述目标类进行加载。

【技术特征摘要】
1.一种查找类的方法,其特征在于,所述方法包括:当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;如果在所述目标程序的类库中查找到所述目标类的类数据,则基于所述目标类的类数据,对所述目标类进行加载,如果在所述目标程序的类库中未查找到所述目标类的类数据,则在所述目标程序的上级程序的类库中查找所述目标类的类数据,基于所述目标类的类数据,对所述目标类进行加载。2.根据权利要求1所述的方法,其特征在于,所述目标程序为应用程序的插件程序,所述上级程序为所述应用程序的主程序和系统程序。3.根据权利要求1所述的方法,其特征在于,所述在所述目标程序的类库中查找所述目标类的类数据,包括:如果所述目标类为非系统类,则在所述目标程序的类库中查找所述目标类的类数据;所述方法还包括:如果所述目标类为系统类,则在系统程序的类库中查找所述目标类的类数据;基于所述目标类的类数据,对所述目标类进行加载。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当检测到为所述目标程序分配类加载器的触发事件发生时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器;所述当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据,包括:当接收到目标程序对目标类的加载指令时,通过所述当前可用的类加载器在所述目标程序的类库中查找所述目标类的类数据。5.根据权利要求4所述的方法,其特征在于,所述当检测到为所述目标程序分配类加载器的触发事件发生时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器,包括:当接收到所述目标程序的加载指令时,将预先存储的所述目标程序的程序级别对应的类加载器,设置为当前可用的类加载器。6.一种查找类的装置,其特征在于,所述装置包括:查找模块,用于当接收到目标程序对目标类的加载指令时,在所述目标程序的类库中查找所述目标类的类数据;加...

【专利技术属性】
技术研发人员:曹丁鹏王益冬陈勇
申请(专利权)人:北京小米移动软件有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1