[發明專利]基于字節碼增強技術實現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.szxzyx.cn/pat/books/201911275297.1/2.html,轉載請聲明來源鉆瓜專利網。





