Java类中方法的替换方法和装置制造方法及图纸

技术编号:15746235 阅读:71 留言:0更新日期:2017-07-03 01:06
本申请提供一种Java类中方法的替换方法和装置。所述方法包括:Java虚拟机加载第一Java类以及第二Java类;通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息;根据所述第二结构信息替换所述第一结构信息。本申请可以实现对各个类型Java类中方法的动态替换,无需重新启动相关应用,也无需重新加载Java类,提高了Java类中方法替换的效率,同时提升了用户体验。

Method and device for replacing method in Java class

The present application provides a method and apparatus for replacing methods in the Java class. The method includes: Java virtual machine loading first class Java and second class Java; second to determine the structure information substitution method substitution method to the first structural information of the first Java class and the class second Java by JNI; the second structure information instead of the first structure according to the information. This application can realize dynamic method for each type of Java class replacement, without restarting the application, there is no need to re load the Java class, improve the efficiency of the replacement method in the Java class, while improving the user experience.

【技术实现步骤摘要】
Java类中方法的替换方法和装置
本申请涉及软件
,尤其涉及一种Java类中方法的替换方法和装置。
技术介绍
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言,Java技术具有卓越的通用性、高效性、平台移植性以及安全性,目前已被广泛使用在各个领域的不同平台。Java类是Java程序的组织单位,Java类中通常封装有方法,然而,Java类不能被直接操作,通常需要由Java虚拟机对Java类进行加载,然后执行Java类中的各个方法,以实现Java程序的运行。在实际的应用开发中,经常需要对Java类中的方法进行修改,目前,在对Java类中的方法进行修改时,普遍需要重新启动相关的应用,从而降低修改效率。同时,一旦Java程序已经发布给用户,用户需要更新并重新启动相关的应用才能达到修改Java类中方法的目的,降低了用户体验。
技术实现思路
有鉴于此,本申请提供一种Java类中方法的替换方法和装置,以解决相关技术中替换Java类中方法需要重新启动相关应用的问题。具体地,本申请是通过如下技术方案实现的:一种Java类中方法的替换方法,所述方法包括:Java虚拟机加载第一Java类以及第二Java类;通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息;根据所述第二结构信息替换所述第一结构信息。可选的,所述通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息,包括:确定所述Java虚拟机类型和版本;根据所述Java虚拟机类型和版本,通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息。可选的,所述第一结构信息包括所述待替换方法的第一属性参数及其第一地址信息;所述第二结构信息包括所述替换方法的第二属性参数及其第二地址信息。可选的,所述通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息,包括:根据所述待替换方法的第一标识,通过JNI获取所述第一结构信息中的第一地址信息,并根据所述第一地址信息查找所述第一结构信息中的第一属性参数;根据所述替换方法的第二标识,通过JNI获取所述第二结构信息中的第二地址信息,并根据所述第二地址信息查找所述第二结构信息中的第二属性参数。可选的,所述根据所述第二结构信息替换所述第一结构信息,包括:将所述第一属性参数对应替换为所述第二属性参数。一种Java类中方法的替换装置,所述装置包括:类加载单元,Java虚拟机加载第一Java类以及第二Java类;结构确定单元,通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息;;结构替换单元,根据所述第二结构信息替换所述第一结构信息。可选的,所述结构确定单元,具体确定所述Java虚拟机类型和版本;根据所述Java虚拟机类型和版本,通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息。可选的,所述第一结构信息包括所述待替换方法的第一属性参数及其第一地址信息;所述第二结构信息包括所述替换方法的第二属性参数及其第二地址信息。可选的,所述结构确定单元,具体根据所述待替换方法的第一标识,通过JNI获取所述第一结构信息中的第一地址信息,并根据所述第一地址信息查找所述第一结构信息中的第一属性参数;根据所述替换方法的第二标识,通过JNI获取所述第二结构信息中的第二地址信息,并根据所述第二地址信息查找所述第二结构信息中的第二属性参数。可选的,所述结构替换单元,具体将所述第一属性参数对应替换为所述第二属性参数。由以上描述可以看出,本申请在Java虚拟机加载第一Java类以及第二Java类后,可以通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息,并根据所述第二结构信息替换所述第一结构信息,以使得后续在对所述第一Java类中的待替换方法调用执行时,可以调用到所述替换方法上,以实现对各个类型Java类中方法的动态替换,无需重新启动相关应用,也无需重新加载Java类,提高了Java类中方法替换的效率,同时提升了用户体验。附图说明图1是本申请一示例性实施例示出的一种Java类中方法的替换方法的流程示意图。图2是本申请一示例性实施例示出的另一种Java类中方法的替换方法的流程示意图。图3是本申请一示例性实施例示出的一种用于Java类中方法的替换装置的一结构示意图。图4是本申请一示例性实施例示出的一种Java类中方法的替换装置的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在相关技术中,以Android应用开发为例,为解决替换Java类中方法需要重新启动相关应用的问题,可以使用Classloader(类加载器)来加载Java类,当需要替换Java类中方法的时候,可以创建新的Classloader来重新加载新的Java类,以达到替换Java类中方法的目的。然而,在这样的实现方案中,需要重新对Java类进行加载,替换Java类中方法的效率较低。此外,针对接口类型的Java类,还可以通过Java的代理类来实现Java类中方法的替换,然而,Java类的代理类只能实现接口类型的Java类中方法的替换,针对其他类型的Java类,则无法实现。针对上述问题,本申请提供一种Java类中方法的替换方案,在替换Java类中方法时,无需重新启动相关应用,提升Java类中方法替换的效率,同时提升用户体验。图1是本申请一示例性实施例示出的一种Java类中方法的替换方法的流程示意图。请参考图1,所述Java类中方法的替换方法可以应用在终端中,包括有以下步骤:步骤101,Java虚拟机加载第一Java类以及第二Java类。在本实施例中,将包括有待替换方法的Java类称为第一Java类,将包括有替换方法的Java类称为第二Java类。在进行Java类中方法的替换时,需要将所述第一Java类中的待替换方法替换为所述第二Java类中的替换方法。在本本文档来自技高网...
Java类中方法的替换方法和装置

【技术保护点】
一种Java类中方法的替换方法,其特征在于,所述方法包括:Java虚拟机加载第一Java类以及第二Java类;通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息;根据所述第二结构信息替换所述第一结构信息。

【技术特征摘要】
1.一种Java类中方法的替换方法,其特征在于,所述方法包括:Java虚拟机加载第一Java类以及第二Java类;通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息;根据所述第二结构信息替换所述第一结构信息。2.根据权利要求1所述的方法,其特征在于,所述通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息,包括:确定所述Java虚拟机类型和版本;根据所述Java虚拟机类型和版本,通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息。3.根据权利要求1所述的方法,其特征在于,所述第一结构信息包括所述待替换方法的第一属性参数及其第一地址信息;所述第二结构信息包括所述替换方法的第二属性参数及其第二地址信息。4.根据权利要求3所述的方法,其特征在于,所述通过JNI确定所述第一Java类中待替换方法的第一结构信息以及所述第二Java类中替换方法的第二结构信息,包括:根据所述待替换方法的第一标识,通过JNI获取所述第一结构信息中的第一地址信息,并根据所述第一地址信息查找所述第一结构信息中的第一属性参数;根据所述替换方法的第二标识,通过JNI获取所述第二结构信息中的第二地址信息,并根据所述第二地址信息查找所述第二结构信息中的第二属性参数。5.根据权利要求4所述的方法,其特征在于,所述根据所述第...

【专利技术属性】
技术研发人员:黎三平
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1