CN108920218A - 一种反射调用方法、装置、终端及计算机可读存储介质 - Google Patents

一种反射调用方法、装置、终端及计算机可读存储介质 Download PDF

Info

Publication number
CN108920218A
CN108920218A CN201810503867.7A CN201810503867A CN108920218A CN 108920218 A CN108920218 A CN 108920218A CN 201810503867 A CN201810503867 A CN 201810503867A CN 108920218 A CN108920218 A CN 108920218A
Authority
CN
China
Prior art keywords
parameter
type
functional unit
parameter type
transition components
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810503867.7A
Other languages
English (en)
Other versions
CN108920218B (zh
Inventor
李瑞东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201810503867.7A priority Critical patent/CN108920218B/zh
Publication of CN108920218A publication Critical patent/CN108920218A/zh
Application granted granted Critical
Publication of CN108920218B publication Critical patent/CN108920218B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提出了一种反射调用方法,包括:当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型,并根据所述第二参数类型的访问参数生成参数实例对象;通过所述反射操作基于所述第二参数类型和所述参数实例对象调用所述第二功能组中的功能函数。本发明还公开了一种反射调用装置、终端及计算机可读存储介质,通过实施上述方案,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。

Description

一种反射调用方法、装置、终端及计算机可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种反射调用方法、装置、终端及计算机可读存储介质。
背景技术
随着计算机设备(例如,移动终端)的快速发展,APP(Application,应用程序)得到了快速普及。APP通常采用基于计算机设备原生系统开发语言和基于设定脚本开发语言(例如:脚本语言JavaScript)的混合开发模式进行开发,但现有技术APP中的基于计算机设备原生系统开发语言开发的功能组件,与基于设定脚本开发语言开发的功能组件之间仅能传递简单参数类型的参数,不能传递复杂参数类型的参数,因此不同开发语言开发的功能组件之间不能基于功能组件之间复杂参数类型的参数传递进行任一功能函数的反射调用操作。
发明内容
本发明提出了一种反射调用方法、装置、终端及计算机可读存储介质,用以解决现有技术混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间不能传递复杂参数类型的参数进行功能函数的反射调用操作的问题。
本发明采用的技术方案是提供一种反射调用方法,应用于基于混合开发模式所开发的应用程序中,所述方法包括:
当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型,并根据所述第二参数类型的访问参数生成参数实例对象;
通过所述反射操作基于所述第二参数类型和所述参数实例对象调用所述第二功能组中的功能函数。
可选的,所述类型转换组件的数量为多个;
在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,所述方法还包括:
在所有所述类型转换组件中,确定将所述第一参数类型转换为所述第二参数类型的所述指定的类型转换组件。
可选的,在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,所述方法还包括:
配置将所述第一参数类型转换为所述第二参数类型的参数类型转换映射关系;
基于所述参数类型转换映射关系,生成用于转换参数类型的所述指定的类型转换组件。
可选的,所述根据所述第二参数类型的访问参数生成参数实例对象,包括:
通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合;
根据所述第二参数类型的访问参数生成所述参数函数集合的参数实例对象。
可选的,在所述通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合之前,所述方法还包括:
在所述指定的类型转换组件中配置所述第二参数类型对应的参数函数集合。
本发明还提供一种反射调用装置,应用于设置有基于混合开发模式所开发的应用程序的终端中,所述装置包括:
转换模块,用于当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型,并根据所述第二参数类型的访问参数生成参数实例对象;
调用模块,用于通过所述反射操作基于所述第二参数类型和所述参数实例对象调用所述第二功能组中的功能函数。
可选的,所述类型转换组件的数量为多个;所述装置还包括:
确定模块,用于在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,在所有所述类型转换组件中,确定将所述第一参数类型转换为所述第二参数类型的所述指定的类型转换组件。
可选的,所述装置还包括:
第一配置模块,用于在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,配置将所述第一参数类型转换为所述第二参数类型的参数类型转换映射关系;基于所述参数类型转换映射关系,生成用于转换参数类型的所述指定的类型转换组件。
可选的,所述根据所述第二参数类型的访问参数生成参数实例对象,包括:
通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合;
根据所述第二参数类型的访问参数生成所述参数函数集合的参数实例对象。
可选的,所述装置还包括:
第二配置模块,用于在所述通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合之前,在所述指定的类型转换组件中配置所述第二参数类型对应的参数函数集合。
本发明还提供一种终端,所述终端包括处理器和存储器;
所述处理器用于执行存储器中存储的参数转换程序,以实现上述的反射调用方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的反射调用方法的步骤。
采用上述技术方案,本发明至少具有下列优点:
本发明所述一种反射调用方法、装置、终端及计算机可读存储介质,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
附图说明
图1为本发明第一实施例的反射调用方法流程图;
图2为本发明第二实施例的反射调用方法流程图;
图3为本发明第三实施例的反射调用方法流程图;
图4为本发明第四实施例的反射调用方法流程图;
图5为本发明第五实施例的反射调用方法流程图;
图6为本发明第六实施例的反射调用装置组成结构示意图;
图7为本发明第七实施例的反射调用装置组成结构示意图;
图8为本发明第八实施例的终端组成结构示意图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
本发明实施例提供的反射调用方法,应用于基于混合开发模式所开发的应用程序中,用于通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现不同开发语言开发的功能组件之间任一功能函数的反射调用操作,以解决现有技术混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间不能传递复杂参数类型的参数进行功能函数的反射调用操作的问题。
本发明第一实施例,一种反射调用方法,如图1所示,包括以下具体步骤:
步骤S101,当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并根据第二参数类型的访问参数生成参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法根据参数类型的访问参数生成参数实例对象。
步骤S102,通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第一实施例所述的反射调用方法,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第二实施例,一种反射调用方法,如图2所示,包括以下具体步骤:
步骤S201,在所有类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
可选的,步骤S201,包括:
在所有预置的类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
通过预置多个用于不同参数类型转换的类型转换组件,以供第一功能组件向第二功能组件传递第一参数类型的调用参数时,通过在预置的类型转换组件中,确定将第一参数类型转换为反射操作所需的第二参数类型的指定类型转换组件,实现了通过指定类型转换组件对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
步骤S202,当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并根据第二参数类型的访问参数生成参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法根据参数类型的访问参数生成参数实例对象。
步骤S202,通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第二实施例所述的反射调用方法,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第三实施例,一种反射调用方法,如图3所示,包括以下具体步骤:
步骤S301,配置将第一参数类型转换为第二参数类型的参数类型转换映射关系;基于参数类型转换映射关系,生成用于转换参数类型的指定的类型转换组件。
通过指定的类型转换组件实现了对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
步骤S302,当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并根据第二参数类型的访问参数生成参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法根据参数类型的访问参数生成参数实例对象。
步骤S303,通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第三实施例所述的反射调用方法,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第四实施例,一种反射调用方法,如图4所示,包括以下具体步骤:
步骤S401,配置将第一参数类型转换为第二参数类型的参数类型转换映射关系;基于参数类型转换映射关系,生成用于转换参数类型的指定的类型转换组件。
通过指定的类型转换组件实现了对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
步骤S402,在所有类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
可选的,步骤S402,包括:
在所有预置的类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
通过预置多个用于不同参数类型转换的类型转换组件,以供第一功能组件向第二功能组件传递第一参数类型的调用参数时,通过在预置的类型转换组件中,确定将第一参数类型转换为反射操作所需的第二参数类型的指定类型转换组件,实现了通过指定类型转换组件对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
步骤S403,当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并根据第二参数类型的访问参数生成参数实例对象。
可选的,根据第二参数类型的访问参数生成参数实例对象的方式,包括:
通过指定的类型转换组件获取第二参数类型对应的参数函数集合;根据第二参数类型的访问参数生成参数函数集合的参数实例对象。
例如:根据第二参数类型的访问参数生成参数实例对象的方式,包括:通过指定的类型转换组件获取第二参数类型对应的参数类;根据第二参数类型的访问参数生成参数类的参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法根据参数类型的访问参数生成参数实例对象。
步骤S403,通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第四实施例所述的反射调用方法,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第五实施例,一种反射调用方法,如图5所示,包括以下具体步骤:
步骤S501,配置将第一参数类型转换为第二参数类型的参数类型转换映射关系;基于参数类型转换映射关系,生成用于转换参数类型的指定的类型转换组件。
通过指定的类型转换组件实现了对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
步骤S502,在指定的类型转换组件中配置第二参数类型对应的参数函数集合。
例如,步骤S502,包括:在指定的类型转换组件中配置第二参数类型对应的参数类。
步骤S503,在所有类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
可选的,步骤S503,包括:
在所有预置的类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
通过预置多个用于不同参数类型转换的类型转换组件,以供第一功能组件向第二功能组件传递第一参数类型的调用参数时,通过在预置的类型转换组件中,确定将第一参数类型转换为反射操作所需的第二参数类型的指定类型转换组件,实现了通过指定类型转换组件对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
步骤S504,当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并通过指定的类型转换组件获取第二参数类型对应的参数函数集合;根据第二参数类型的访问参数生成该参数函数集合的参数实例对象。
例如,步骤S504,包括:当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并通过指定的类型转换组件获取第二参数类型对应的参数类;根据第二参数类型的访问参数生成该参数类的参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:步骤S504,包括:当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法获取第二参数类型对应的参数类;根据第二参数类型的访问参数生成该参数类的参数实例对象。
步骤S504,通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第五实施例所述的反射调用方法,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明实施例提供的反射调用装置,应用于设置有基于混合开发模式所开发的应用程序的终端中,用于通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现不同开发语言开发的功能组件之间任一功能函数的反射调用操作,以解决现有技术混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间不能传递复杂参数类型的参数进行功能函数的反射调用操作的问题。
本发明第六实施例,一种反射调用装置,如图6所示,包括以下组成部分:
转换模块400,用于当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并根据第二参数类型的访问参数生成参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:转换模块400,用于当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法根据参数类型的访问参数生成参数实例对象。
调用模块500,用于通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第六实施例所述的反射调用装置,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第七实施例,一种反射调用装置,如图7所示,包括以下组成部分:
第一配置模块100,用于配置将第一参数类型转换为第二参数类型的参数类型转换映射关系;基于参数类型转换映射关系,生成用于转换参数类型的指定的类型转换组件。
通过指定的类型转换组件实现了对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
第二配置模块200,用于在指定的类型转换组件中配置第二参数类型对应的参数函数集合。
例如,第二配置模块200,用于在指定的类型转换组件中配置第二参数类型对应的参数类。
确定模块300,用于在所有类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
可选的,确定模块300,具体用于:
在所有预置的类型转换组件中,确定将第一参数类型转换为第二参数类型的指定的类型转换组件。
通过预置多个用于不同参数类型转换的类型转换组件,以供第一功能组件向第二功能组件传递第一参数类型的调用参数时,通过在预置的类型转换组件中,确定将第一参数类型转换为反射操作所需的第二参数类型的指定类型转换组件,实现了通过指定类型转换组件对复杂类型调用参数的在不同脚本语言开发的功能组件之间的传递过程中,调用参数的参数类型自动转换。
转换模块400,用于当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并通过指定的类型转换组件获取第二参数类型对应的参数函数集合;根据第二参数类型的访问参数生成该参数函数集合的参数实例对象。
例如,转换模块400,用于当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将第一功能组件发送至第二功能组件中的调用参数的第一参数类型转换为反射操作所需的第二参数类型,并通过指定的类型转换组件获取第二参数类型对应的参数类;根据第二参数类型的访问参数生成该参数类的参数实例对象。
在本实施例中,对第一脚本语言和第二脚本语言不做具体限定,可以是第一脚本语言为脚本语言Javascript,第二脚本语言为原生系统语言;也可以是第一脚本语言为原生系统语言,第二脚本语言为脚本语言Javascript。
在本实施例中,指定的类型转换组件为预先设置的将第一参数类型转换为第二参数类型,并根据第二参数类型的访问参数生成参数实例对象的功能组件。
例如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于苹果公司操作系统iOS原生系统语言Objective-C开发的功能组件。
又如:第一功能组件为基于Javascript脚本语言开发的功能组件,第二功能组件为基于安卓(Android)操作系统原生系统语言开发的功能组件。
通过独立设置的类型转换组件对第一功能组件发送至第二功能组件中的调用参数的参数类型进行自动转换,实现了复杂类型参数的在不同脚本语言开发的功能组件之间的传递,以供反射操作基于复杂类型参数执行任一功能函数的调用,克服了现有技术中复杂类型参数无法在不同脚本语言开发的功能组件之间的传递的弊端。通过独立设置的类型转换组件不会影响影响已有的功能函数调用,及已有的参数类型,因此独立设置的类型转换组件具有低侵入性。
例如:转换模块400,用于当基于脚本语言Javascript开发的第一功能组件通过反射操作调用基于原生系统语言Objective-C开发的第二功能组中的功能函数时,通过指定的类型转换组件,通过指定的类型转换组件中的Convert方法将第一功能组件发送至第二功能组件中的调用参数的字符串(String)类型转换为反射操作所需的参数类型,并通过指定的类型转换组件中的getType方法获取第二参数类型对应的参数类;根据第二参数类型的访问参数生成该参数类的参数实例对象。
调用模块500,用于通过反射操作基于第二参数类型和参数实例对象调用第二功能组中的功能函数。
本发明第七实施例所述的反射调用装置,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第八实施例,一种终端,如图8所示,包括以下组成部分:
处理器501和存储器502。在本发明的一些实施例中,处理器501和存储器502可通过总线或者其它方式连接。
处理器501可以是通用处理器,例如中央处理器(Central Processing Unit,CPU),还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(英文:Application Specific Integrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器502用于存储处理器501的可执行指令;
存储器502,用于存储程序代码,并将该程序代码传输给处理器501。存储器502可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器502也可以包括非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器502还可以包括上述种类的存储器的组合。
其中,处理器501用于调用存储器502存储的程序代码管理代码,执行本发明第一实施例至本发明第五实施例中任一实施例中部分或全部步骤。
本发明第八实施例所述的终端,通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
本发明第九实施例,一种计算机可读存储介质。
计算机存储介质可以是RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域已知的任何其他形式的存储介质。
计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现本发明第一实施例至本发明第五实施例中任一实施例中部分或全部步骤。
本发明第九实施例所述的计算机可读存储介质,存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,能够通过混合开发模式开发的应用程序中基于不同开发语言开发的功能组件之间的复杂参数类型的参数传递,实现了不同开发语言开发的功能组件之间任一功能函数的反射调用操作。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (12)

1.一种反射调用方法,其特征在于,应用于基于混合开发模式所开发的应用程序中,所述方法包括:
当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型,并根据所述第二参数类型的访问参数生成参数实例对象;
通过所述反射操作基于所述第二参数类型和所述参数实例对象调用所述第二功能组中的功能函数。
2.根据权利要求1所述的方法,其特征在于,所述类型转换组件的数量为多个;
在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,所述方法还包括:
在所有所述类型转换组件中,确定将所述第一参数类型转换为所述第二参数类型的所述指定的类型转换组件。
3.根据权利要求1所述的方法,其特征在于,在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,所述方法还包括:
配置将所述第一参数类型转换为所述第二参数类型的参数类型转换映射关系;
基于所述参数类型转换映射关系,生成用于转换参数类型的所述指定的类型转换组件。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述第二参数类型的访问参数生成参数实例对象,包括:
通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合;
根据所述第二参数类型的访问参数生成所述参数函数集合的参数实例对象。
5.根据权利要求4所述的方法,其特征在于,在所述通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合之前,所述方法还包括:
在所述指定的类型转换组件中配置所述第二参数类型对应的参数函数集合。
6.一种反射调用装置,其特征在于,应用于设置有基于混合开发模式所开发的应用程序的终端中,所述装置包括:
转换模块,用于当基于第一脚本语言开发的第一功能组件通过反射操作调用基于第二脚本语言开发的第二功能组中的功能函数时,通过指定的类型转换组件,将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型,并根据所述第二参数类型的访问参数生成参数实例对象;
调用模块,用于通过所述反射操作基于所述第二参数类型和所述参数实例对象调用所述第二功能组中的功能函数。
7.根据权利要求6所述的装置,其特征在于,所述类型转换组件的数量为多个;所述装置还包括:
确定模块,用于在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,在所有所述类型转换组件中,确定将所述第一参数类型转换为所述第二参数类型的所述指定的类型转换组件。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一配置模块,用于在所述将所述第一功能组件发送至所述第二功能组件中的调用参数的第一参数类型转换为所述反射操作所需的第二参数类型之前,配置将所述第一参数类型转换为所述第二参数类型的参数类型转换映射关系;基于所述参数类型转换映射关系,生成用于转换参数类型的所述指定的类型转换组件。
9.根据权利要求6至8中任一项所述的装置,其特征在于,所述根据所述第二参数类型的访问参数生成参数实例对象,包括:
通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合;
根据所述第二参数类型的访问参数生成所述参数函数集合的参数实例对象。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二配置模块,用于在所述通过所述指定的类型转换组件获取所述第二参数类型对应的参数函数集合之前,在所述指定的类型转换组件中配置所述第二参数类型对应的参数函数集合。
11.一种终端,其特征在于,所述终端包括处理器和存储器;
所述处理器用于执行存储器中存储的参数转换程序,以实现根据权利要求1~5中任一项所述的反射调用方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现根据权利要求1~5中任一项所述的反射调用方法的步骤。
CN201810503867.7A 2018-05-23 2018-05-23 一种反射调用方法、装置、终端及计算机可读存储介质 Active CN108920218B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810503867.7A CN108920218B (zh) 2018-05-23 2018-05-23 一种反射调用方法、装置、终端及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810503867.7A CN108920218B (zh) 2018-05-23 2018-05-23 一种反射调用方法、装置、终端及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108920218A true CN108920218A (zh) 2018-11-30
CN108920218B CN108920218B (zh) 2023-03-03

Family

ID=64402652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810503867.7A Active CN108920218B (zh) 2018-05-23 2018-05-23 一种反射调用方法、装置、终端及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108920218B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625379A (zh) * 2020-06-02 2020-09-04 网易(杭州)网络有限公司 一种信息处理的方法、装置、电子设备和可读存储介质
WO2021248310A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 服务调用信息的获取方法、装置和服务的漏洞测试方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693121A (zh) * 2011-03-24 2012-09-26 叶盛誉 一种跨平台手机应用的自动开发制作系统及实现方法
CN102866884A (zh) * 2011-08-31 2013-01-09 微软公司 将操作系统的本机应用编程接口投射到其他编程语言
US20140040860A1 (en) * 2012-07-31 2014-02-06 Joseph D. Darcy Efficient and Expansive Conversions Between Reference and Primitive
CN104063225A (zh) * 2014-06-27 2014-09-24 广州华多网络科技有限公司 锁屏主题开发方法及装置
CN105739967A (zh) * 2016-01-19 2016-07-06 四川长虹电器股份有限公司 移动应用中js异步调用native的方法
CN107766119A (zh) * 2016-08-19 2018-03-06 阿里巴巴集团控股有限公司 一种脚本语言接口的处理方法、装置和设备
CN107807831A (zh) * 2017-10-11 2018-03-16 五八有限公司 应用程序中的业务执行方法、装置、终端及存储介质
CN107861713A (zh) * 2017-07-25 2018-03-30 平安普惠企业管理有限公司 数据调用方法、装置及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693121A (zh) * 2011-03-24 2012-09-26 叶盛誉 一种跨平台手机应用的自动开发制作系统及实现方法
CN102866884A (zh) * 2011-08-31 2013-01-09 微软公司 将操作系统的本机应用编程接口投射到其他编程语言
US20140040860A1 (en) * 2012-07-31 2014-02-06 Joseph D. Darcy Efficient and Expansive Conversions Between Reference and Primitive
CN104063225A (zh) * 2014-06-27 2014-09-24 广州华多网络科技有限公司 锁屏主题开发方法及装置
CN105739967A (zh) * 2016-01-19 2016-07-06 四川长虹电器股份有限公司 移动应用中js异步调用native的方法
CN107766119A (zh) * 2016-08-19 2018-03-06 阿里巴巴集团控股有限公司 一种脚本语言接口的处理方法、装置和设备
CN107861713A (zh) * 2017-07-25 2018-03-30 平安普惠企业管理有限公司 数据调用方法、装置及计算机可读存储介质
CN107807831A (zh) * 2017-10-11 2018-03-16 五八有限公司 应用程序中的业务执行方法、装置、终端及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
沈洋 等: "单片机C51与汇编语言的混合调用", 《电脑编程技巧与维护》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625379A (zh) * 2020-06-02 2020-09-04 网易(杭州)网络有限公司 一种信息处理的方法、装置、电子设备和可读存储介质
WO2021248310A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 服务调用信息的获取方法、装置和服务的漏洞测试方法

Also Published As

Publication number Publication date
CN108920218B (zh) 2023-03-03

Similar Documents

Publication Publication Date Title
CN110245220A (zh) 电子文件签署方法、装置及服务器、存储介质
CN109587252A (zh) 运营商参数的加载方法、装置、电子设备及存储介质
WO2015058709A1 (en) Secured payment method and relevant device and system
CN109636317A (zh) 业务控制方法、装置、系统及存储介质
CN113608898A (zh) 指纹访问方法、装置、设备及存储介质
CN108920218A (zh) 一种反射调用方法、装置、终端及计算机可读存储介质
CN105656113A (zh) 用于充电控制的方法及其电子装置
CN107450955A (zh) 设备的无线配置方法、设备、移动终端、系统、锁具及可读存储介质
CN114461415A (zh) 消息数据处理方法、装置、计算机设备及存储介质
CN110167000A (zh) 紧急服务的指示方法、终端设备和网络设备
CN105163295A (zh) 一种短信发送失败的处理方法及终端
CN109104292B (zh) 更新部署处理方法、相关设备和计算机可读存储介质
CN107172293A (zh) 终端流量的控制提醒方法及系统
CN108848127A (zh) 数据传输方法、装置、计算机设备及计算机可读存储介质
CN106169048B (zh) 文件删除方法、装置及电子设备
CN108650702A (zh) 一种广播信息的处理方法及用户终端
CN104951325B (zh) 一种信息显示方法及电子设备
CN108845919A (zh) 一种日志上报方法、装置、终端及计算机可读存储介质
CN112054509B (zh) 一种变电站母线拓扑结构的识别方法及系统、设备、介质
CN108345696A (zh) 卡片排序方法、装置、服务器以及存储介质
CN108256312A (zh) 网页打开本地应用程序的方法、装置及移动终端
CN106912022A (zh) 消防救援方法及系统
CN107249187A (zh) 副号的终端管理方法及系统
CN107132964A (zh) 终端内多个app优先级的确定方法及系统
CN108762736A (zh) 项目分支的管理方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant