[发明专利]基于字节码增强技术实现JAVA模式匹配特性的方法有效
申请号: | 201911275297.1 | 申请日: | 2019-12-12 |
公开(公告)号: | CN111190585B | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 童绪祥;范渊 | 申请(专利权)人: | 杭州安恒信息技术股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 杭州赛科专利代理事务所(普通合伙) 33230 | 代理人: | 郭薇;冯年群 |
地址: | 310051 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 字节 增强 技术 实现 java 模式 匹配 特性 方法 | ||
本发明涉及基于字节码增强技术实现JAVA模式匹配特性的方法,通过基于JAVA的语法规则定义JAVA可识别的模式匹配语法结构,自定义注解与注解处理器,完成编译期的代码增强,对JAVA内置功能进行扩展,最终实现JAVA模式匹配。本发明的有益效果在于增强JAVA模式匹配功能,将仅处理字符串的正则表达式扩展成处理任意数据结构的更一般方案,对JAVA中switch‑case关键字进行增强,使其可对任意数据类型做类型判断或数据结构匹配,作为一种更好的业务数据抽象能力,将复杂的业务逻辑通过模式表达式直观表达出来,更好地处理复杂的树状数据结构,代码逻辑更简洁易读,提高开发效率,减少逻辑错误率。
技术领域
本发明涉及电数字数据处理的技术领域,特别涉及一种基于字节码增强技术实现JAVA模式匹配特性的方法。
背景技术
JAVA是一种面向对象的编程语言,由于其严格的面向对象风格,很适合实际业务逻辑的抽象,在web应用中使用非常广泛,然而,随着业务逻辑的复杂度增加,对象关系日渐复杂,不得不需要处理数据内部复杂的树状结构,从而导致大量的逻辑判断与代码分支,逻辑不直观,代码维护困难;模式匹配作为一种构造表达式,可以用来构造复杂树状对象,在数据实际位置填上占位变量,可以更直观的表达数据结构,代码更清晰易读。
模式匹配作为一种语言特性,在上世纪七十年代中期就已经出现。并在许多函数式语言中作为标准功能,比如ML、Caml、Erlang、Haskell,以及同样运行在JAVA虚拟机之上的SCALA;JAVA从1.8版本开始支持函数编程,同样支持函数式的SCALA语言也遵循JAVA虚拟机字节码规范。
当然,提到模式,更容易想到的是正则表达式中的模式,然而,正则表达式仅能处理字符串这样的字符数组结构,是模式匹配中的一种特殊情况。以JAVA中的switch-case为例,其只能识别基本数据类型及String字符串,表达形式非常有限。
同时,实际上面向对象编程中有一种设计模式叫做访问者模式,利用模式匹配能处理的事务也可以用访问者模式来表达,但访问者模式利用了面向对象的虚方法分发机制,这导致在实践中访问者模式非常笨重,很多用模式匹配很容易做到的事情,用访问者模式做不到,最终导致访问者实现代码非常厚重。
发明内容
本发明解决了现有技术中存在的问题,提供了一种优化的基于字节码增强技术实现JAVA模式匹配特性的方法,以模式形式进行匹配,可以匹配对象的内在构建形式,表达形式更加多样化,代码也非常简洁易读,可以处理面向对象的复杂树形数据结构。
本发明所采用的技术方案是,一种基于字节码增强技术实现JAVA模式匹配特性的方法,所述方法包括以下步骤:
步骤1:基于JAVA的语法规则定义JAVA可识别的模式匹配语法结构;
步骤2:自定义注解与注解处理器,完成编译期的代码增强;
步骤3:对JAVA内置功能进行扩展;
步骤4:实现JAVA模式匹配。
优选地,所述步骤1中,任一模式匹配语法结构包括匹配器及若干与其对应的逻辑分支。
优选地,所述步骤2包括以下步骤:
步骤2.1:自定义注解;所述注解添加在类构造器上;
步骤2.2:编写注解处理器,用于在编译期自动执行处理器代理、识别被注解的类并增强。
优选地,所述步骤2.1中,被添加的类可以完成属性增加、构造器补全、类型匹配和构造器匹配。
优选地,所述步骤2.2包括以下步骤:
步骤2.2.1:加载被注解类的源代码,解析构造器;
步骤2.2.2:若构造器存在参数,则进行下一步,否则,进行步骤2.2.6;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州安恒信息技术股份有限公司,未经杭州安恒信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911275297.1/2.html,转载请声明来源钻瓜专利网。