[发明专利]一种自定义类的加载方法及装置有效
申请号: | 201510548994.5 | 申请日: | 2015-08-31 |
公开(公告)号: | CN105045642B | 公开(公告)日: | 2018-09-25 |
发明(设计)人: | 孙文鸿 | 申请(专利权)人: | 北京金山安全软件有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京市广友专利事务所有限责任公司 11237 | 代理人: | 祁献民 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自定义 加载 方法 装置 | ||
1.一种自定义类的加载方法,其特征在于,该方法包括:
接收第一自定义类的加载请求,查询所述第一自定义类是否继承有第二自定义类,如果有,获取所述第一自定义类的类加载器链;
在获取的所述类加载器链中,查找到加载所述第二自定义类的类加载器;
提取所述第二自定义类的类加载器中预先设置的加载目录,并将提取的加载目录添加到所述类加载器链中用于加载所述第一自定义类的类加载器的加载路径中;
删除所述类加载器链中除所述第一自定义类的类加载器之外的自定义类加载器,得到更新的类加载器链;
按照所述更新的类加载器链加载所述第一自定义类。
2.根据权利要求1所述的方法,其特征在于,第一自定义类为组件自定义类,所述第二自定义类为应用程序自定义类,所述应用程序为所述组件所属的应用程序,所述应用程序自定义类存在于所述应用程序以及所述组件中。
3.根据权利要求1所述的方法,其特征在于,所述查找到加载所述第二自定义类的类加载器包括:
提取第一自定义类的类加载器链中的所述第一自定义类的类加载器,将预加载第二自定义类的任务请求,从链头至所述第一自定义类的类加载器链的链尾的方向,依序传递至链尾对应的类加载器;
所述链尾对应的类加载器在加载任务列表中查找是否包含所述第二自定义类,如果包含,所述链尾对应的类加载器为所述第二自定义类的类加载器,如果未包含,从所述链尾对应的类加载器至所述第一自定义类的类加载器的方向,依序查询相应的加载任务列表中查找是否包含所述第二自定义类,并将包含所述第二自定义类的加载任务列表对应的自定义类加载器作为所述第二自定义类的类加载器。
4.根据权利要求1所述的方法,其特征在于,所述预先设置的加载目录包括:/vendor/lib目录以及/system/lib目录。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述按照所述更新的类加载器链加载所述第一自定义类包括:
提取更新的第一自定义类的类加载器链中的所述第一自定义类的类加载器,将加载第一自定义类的任务请求,从所述第一自定义类的类加载器至所述更新的第一自定义类的类加载器链的链尾的方向,依序传递至链尾对应的类加载器;
所述更新的第一自定义类的类加载器链的链尾对应的类加载器在加载任务列表中查找是否包含所述第一自定义类,如果包含,加载所述第一自定义类并返回加载结果,如果未包含,从所述链尾对应的类加载器至所述第一自定义类的类加载器的方向,依序查询相应的加载任务列表中查找是否包含所述第一自定义类,并从包含所述第一自定义类的加载任务列表对应的自定义类加载器加载所述第一自定义类并返回加载结果;
接收加载结果信息,提取所述更新的第一自定义类的类加载器链中的所述第一自定义类的类加载器,将加载第二自定义类的任务请求,从所述第一自定义类的类加载器至所述更新的第一自定义类的类加载器链的链尾的方向,依序传递至链尾对应的类加载器;
所述更新的第一自定义类的类加载器链的链尾对应的类加载器在加载任务列表中查找是否包含所述第二自定义类,如果包含,加载所述第二自定义类并返回加载结果,如果未包含,从所述链尾对应的类加载器至所述第一自定义类的类加载器的方向,依序查询相应的加载任务列表中查找是否包含所述第二自定义类,并从包含所述第二自定义类的加载任务列表对应的自定义类加载器加载所述第二自定义类并返回加载结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京金山安全软件有限公司,未经北京金山安全软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510548994.5/1.html,转载请声明来源钻瓜专利网。