动态地产生的基于模式的类的结构识别制造技术

技术编号:14689132 阅读:32 留言:0更新日期:2017-02-23 11:33
可使用结构描述来使用动态地产生的模式实例化类的结构识别。替代于仅通过名称来描述类并且使用该名称定位该类,可通过生成器函数和针对生成器函数的实参来引用类。结构描述可指定生成器函数和形参。另外,类的结构描述可被用作由另一结构描述指定的生成器函数的形参。对于可使用类名的几乎任何情况,可类似于类名使用结构描述。可使用类的结构描述将类进行比较。例如,如果两个结构描述指定相同的生成器函数和形参,则所述两个结构描述可被视为相同的类。

【技术实现步骤摘要】
【国外来华专利技术】
技术介绍
本专利技术一般地涉及软件开发,并且更具体地讲,涉及各种编程语言中的任何编程语言(诸如,作为一个示例,独立于平台的面向对象的编程语言)内的语言开发的各种方面。在面向对象的编程中,传统上通过名称来引用类。如果两个类引用具有相同名称(并且具有相同起源,诸如被从同一类加载器或存储库加载),则它们被视为相同。另外,通过将模式或模板实例化来产生类是常见的开发技术。例如,这种实例化可采用由开发者执行的手动编码或由工具执行的机械模板扩展的形式。尽管基于模式或模板产生的类可提供更多的可表达性和可读性,但机械模板实例化经常依赖于类的功能的描述和类的名称之间的脆弱的映射,从而频繁地将难看的机器产生的“弄糟”的名称暴露给用户,同时在该处理中丢弃信息(例如,类Account$ImmutableWrapper是将“immutablewrapper”模板应用于类型“Account”的结果)。如果描述和类名之间的映射变化,则具有相同名称的两个类引用可能不二进制兼容,因为它们可能不再执行相同功能。
技术实现思路
可使用结构描述来使用动态地产生的模式实例化类的结构识别,以便诸如扩展在运行时环境中描述类的方式。替代于仅通过名称来描述类并且使用该名称定位该类(例如,在盘上的类文件中),类可被引用为代码生成器函数和可能的一些实参的组合。换句话说,在一些实施例中,可通过结构描述来描述类,所述结构描述指定生成器函数和针对该生成器函数的可能的一个或多个形参。在一些实施例中,对于可使用类名的几乎任何情况(例如,实参类型、返回类型、字段类型、超类型、instanceof或cast操作符的操作数等),结构描述可被视为类名(例如,可替代于类名而使用结构描述)。例如,编译器和/或虚拟化运行时环境可被配置为允许使用结构描述的类的描述。另外,结构描述可被视为对用于产生类的制法进行编码。可使用类的结构描述将类进行比较。更一般地讲,能够按照结构机械方式针对两个类描述比较等同性。附图说明图1是表示根据各种实施例的用于编译和执行按照高级的面向对象的语言指定并且被配置为支持类的结构描述的计算机程序的工作流程的逻辑方框图。图2是表示根据一个实施例的如这里所述的类的结构描述的逻辑方框图。图3是表示根据一个实施例的基于结构描述的类的产生的逻辑方框图。图4是表示如这里所述的用于基于类的结构描述产生类的方法的一个实施例的流程图。图5是表示如这里所述的用于基于两个类的结构描述比较所述两个类的方法的一个实施例的流程图。图6是表示根据一个实施例的以递归方式使用的结构描述的逻辑图。图7是表示根据一个实施例的适合使用结构描述实现动态地产生的模式实例化产生的类的结构识别的示例性计算机系统的逻辑方框图。具体实施方式这里描述使用独立于平台的面向对象的语言(诸如,JavaTM编程语言)支持各种特征(诸如,使用类的结构描述的动态地产生的模式实例化产生的类的结构识别)的软件开发的增强的各种实施例。根据一些实施例,可使用结构描述来使用动态地产生的模式实例化类的结构识别,以便诸如扩展在运行时环境中描述类的方式。替代于仅通过名称来描述类并且使用该名称找到该类(例如,在盘上的类文件中),类可被引用为字节码生成器函数以及一些静态实参的组合。换句话说,在一些实施例中,可通过结构描述来描述类,所述结构描述指定生成器函数(例如,“从T到U的函数”、“T的数组”、“T和U的元组”、“用于接口I的远程代理”等)和针对该生成器函数的可能的一个或多个形参。在一些实施例中,对于使用类名的几乎任何情况,结构描述可被视为(例如,可被用作)类名。例如,用于类的结构描述可包括对模式的引用(通过名称或通过对实现所述模式的类或方法的引用)和针对模式的实例化的形参。在一些实施例中,结构描述可包括指示生成器函数的信息和针对该生成器函数的一个或多个形参。在一些实施例中,如果两个结构引用具有相同的模式和形参,则所述两个结构引用可被视为同一个类(或引用同一个类)。因此,在一些实施例中,可按照传统上使用类的各自类名对类进行比较的相同的方式使用类的各自结构描述对类进行比较。事实上,在一些实施例中,类的结构描述可被视为类名,并且可替代于类名而使用类的结构描述,并且因此,可使用类的类名(所述类名可以是结构描述)对类进行比较。在一些实施例中,可在两个类的比较中涉及在类的结构描述中识别的生成器函数。例如,生成器函数可按照可允许生成器函数确定两个实例化是否相同的方式使用(例如,执行)。因此,在一些实施例中,生成器函数可被配置为参与“我是与他相同的实例化吗”的判断,因为在一些情况下,针对实例化的形参可能是可交换的(例如,用于多个接口的动态代理),而在其它情况下,它们可能不是可交换的。根据一些实施例,类的结构描述可在纯粹名称上的VM(例如,未被配置为支持作为类名的结构描述的VM)中出现在类名原本能够出现的任何地方。例如,类的结构描述可作为实参类型、返回类型、字段类型、超类型、instanceof或cast操作符的操作数而出现,或替代于实参类型、返回类型、字段类型、超类型、instanceof或cast操作符的操作数而出现,并且通常出现在可使用类名的任何地方。在下面的详细描述中,阐述许多特定细节以提供对要求保护的主题的彻底的理解。然而,本领域技术人员将会理解,可在没有这些特定细节的情况下实施要求保护的主题。在其它实例中,因为本领域普通技术人员知道方法、设备或系统,所以以下未详细地描述所述方法、设备或系统以免模糊要求保护的主题。尽管对于几个实施例和说明性附图作为示例在这里描述了各种实施例,但本领域技术人员将会意识到,实施例不限于描述的实施例或附图。应该理解,附图及其详细描述并不意图将实施例限制于公开的特定形式,而是相反地,意图包括落在本公开的精神和范围内的所有变型、等同物和替代物。这里使用的任何标题仅用于组织目的,而非意图用于限制该描述的范围。如在整个本申请中所使用,在许可意义(即,意味着具有可能性)而非强制性意义(即,意味着必须)上使用词语“可”。类似地,词语“包括”、“包含”和“具有”表示包括但不限于。按照对存储在特定设备或专用计算装置或平台的存储器内的二进制数字信号的操作的算法或符号表示提供下面的详细描述的一些部分。在这个特定说明书的上下文中,一旦通用计算机被编程为根据来自程序软件的指令执行特定功能,则术语特定设备等包括所述通用计算机。算法描述或符号表示是由信号处理或相关领域普通技术人员用于将他们的工作的实质传达给其他本领域技术人员的方法的示例。算法在这里通常被视为导致预期结果的前后一致的一系列操作或类似信号处理。在这种情况下,操作或处理涉及物理量的物理操纵。通常,但并非必然,这种量可采取能够被存储、传送、组合、比较或以其它方式操纵的电信号或磁信号的形式。有时,主要由于常用的原因,已证明将这种信号称为位、数据、值、元素、码元、字符、项、数、数字等是比较方便的。然而,应该理解,所有这些或类似术语应该与合适的物理量关联并且仅是方便的标签。除非另外具体地指出,否则从下面的讨论清楚可知,应该理解,在本说明书中,使用诸如“处理”、“计算”、“核算”、“确定”等的术语的讨论始终表示特定设备(诸如,专用计算机或类似专用电子计算装置)的动作或处理。因此,在本说明书的上本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201580028400.html" title="动态地产生的基于模式的类的结构识别原文来自X技术">动态地产生的基于模式的类的结构识别</a>

【技术保护点】
一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序指令,所述程序指令在计算装置上执行时使计算装置进行:在类文件中识别包括结构描述的类名,其中所述结构描述包括识别生成器函数的信息和用于生成器函数的一个或多个形参;执行生成器函数,其中所述执行包括将所述一个或多个形参作为输入提供给生成器函数;以及产生与类名对应的类,其中所述产生至少部分地基于来自所述执行的结果。

【技术特征摘要】
【国外来华专利技术】2014.04.22 US 61/982,802;2015.03.17 US 14/660,1771.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序指令,所述程序指令在计算装置上执行时使计算装置进行:在类文件中识别包括结构描述的类名,其中所述结构描述包括识别生成器函数的信息和用于生成器函数的一个或多个形参;执行生成器函数,其中所述执行包括将所述一个或多个形参作为输入提供给生成器函数;以及产生与类名对应的类,其中所述产生至少部分地基于来自所述执行的结果。2.如权利要求1所述的非暂态计算机可读存储介质,其中由独立于平台的面向对象的语言的编译器在编译时进行所述识别、所述执行和所述产生。3.如权利要求1所述的非暂态计算机可读存储介质,其中在独立于平台的面向对象的运行时环境的运行时进行所述识别、所述执行和所述产生。4.如权利要求1所述的非暂态计算机可读存储介质,其中所述执行包括从运行时库加载生成器函数。5.如权利要求1所述的非暂态计算机可读存储介质,其中所述一个或多个形参之一包括另一结构描述,其中所述另一结构描述包括识别另一生成器函数的信息和用于所述另一生成器函数的一个或多个其它形参,其中所述执行还包括:执行所述另一生成器函数,其中所述执行所述另一生成器函数包括将所述一个或多个其它形参作为输入提供给所述另一生成器函数;以及将来自所述执行所述另一生成器函数的结果作为输入提供给所述生成器函数。6.如权利要求1所述的非暂态计算机可读存储介质,其中所述结构描述指定要被应用于所述一个或多个形参中的至少一个形参的特化操作;并且其中所述执行生成器函数还包括将指定的特化操作应用于所述至少一个形参。7.如权利要求1所述的非暂态计算机可读存储介质,还包括:识别另一结构描述,其中所述另一结构描述包括识别另一生成器函数的信息和用于所述另一生成器函数的一个或多个其它形参;以及至少部分地基于所述结构描述和所述另一结构描述之间的比较以及所述一个或多个形参和所述一个或多个其它形参之间的比较,确定所述结构描述和所述另一结构描述是否代表两个等同的类。8.一种方法,包括:由在一个或多个计算装置上实现的编译器或独立于平台的面向对象的运行时环境在类文件中识别类名,其中所述类名包括结构描述,其中所述结构描述包括识别生成器函数的信息和用于生成器函数的一个或多个形参;由编译器或独立于平台的面向对象的运行时环境执行生成器函数,其中所述执行包括将所述一个或多个形参作为输入提供给生成器函数;以及由编译器或独立于平台的面向对象的运行时环境产生与类名对应的类,其中所述产生至少部分地基于来自所述执行的结果。9.如权利要求8所述的方法,其中由编译器在编译时进行所述识别、所述执行和所述产生,并且其中所述类文件基于独立于平台的面向对象的语言。10.如权利要求8所述的方法,其中在独立于平台的面向对象的运行时环境的运行时进行所述识别、所述执行和所述产生。11.如权利要求8所述的方法,其中所述执行包括从运行时库加载生成器函数。12.如权利要求8所述的方法,其中所述一个或多个形参之一包括另一结构描述,其中所述另一结构描述包括识别另一...

【专利技术属性】
技术研发人员:B·戈茨J·R·罗斯
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:美国;US

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

1