公开/公告号CN112882843A
专利类型发明专利
公开/公告日2021-06-01
原文格式PDF
申请/专利权人 鲸灵科技股份有限公司;
申请/专利号CN202110153804.5
发明设计人 刘洋;
申请日2021-02-04
分类号G06F9/54(20060101);
代理机构32204 南京苏高专利商标事务所(普通合伙);
代理人柏尚春
地址 225001 江苏省扬州市瘦西湖路195号花都汇商务中心2号楼
入库时间 2023-06-19 11:11:32
技术领域
本发明涉及计算机技术领域,特别涉及一种英文枚举自动补全中文值的方法。
背景技术
枚举是系统开发中常用的一种基础数据类型,通常为提高系统的稳定性,在系统软件接口中使用大写英文字符来定义具体的枚举值,在系统操作界面使用用户可理解的中文值进行展示,这样就需要系统支持枚举值的英文和中文的读取。
现有技术中,枚举值中英文的转换是由客户端进行的。服务端提供英文枚举值,客户端会存储该枚举值中英文的映射关系数据,客户端获取英文枚举值后再根据中英文映射关系转换为中文进行展示,这种实现方式系统耦合性高,程序扩展性差,枚举值发生变更时需要同时修改服务端和客户端,另外客户端需要进行中英文转换的工作,增加了软件开发的工作量。
发明内容
发明目的:本发明的目的是提供一种系统耦合性低、程序扩展性强的英文枚举自动补全中文值的方法。
技术方案:本发明所述的英文枚举自动补全中文值的方法,包括以下步骤:
(1)定义基础枚举接口;
(2)对定义的枚举类型扩展一个存储枚举值的属性和存储中文的属性;
(3)枚举类型实现步骤(1)中的基础枚举接口,并实现获取枚举中文值的方法;
(4)定义一个返回值处理类;
(5)补全返回值中的枚举中文值;
(6)定义系统拦截器,配置该拦截器拦截所有系统请求;
(7)重写步骤(6)中定义的拦截器返回前处理方法,并将处理结果返回。
所述步骤(1)中基础枚举接口包含一个获取枚举中文值的方法。
所述步骤(4)中返回值处理类包含一个公共方法其参数为请求的返回体。
所述步骤(5)中对返回值的补全是通过循环递归实现,保证该返回值及其集合属性中的枚举类型均能被进行中文值补全。
所述步骤(6)中对返回值的处理是通过拦截器方式自动实现。
有益效果:与现有技术相比,本发明具有如下优点:1、通过使用服务端拦截器的技术手段,在拦截器中统一对枚举值的中文值进行补全,这样客户端可以直接使用补全的中文值,解决了客户端需要存储中英文转换数据进行转换的问题,降低了客户端与枚举值的耦合性,同时也减少了客户端的工作量;2、使用系统低耦合的拦截器机制实现,自动补全软件接口返回值中枚举中文值属性,减少软件开发时间,使枚举类型开发工作效率提高20%左右。
附图说明
图1为步骤流程图;
图2为枚举中文值补全类图;
图3枚举值中文值补全流程图;
图4为枚举中文值补全时序图。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。
如图1所示,本方法包括以下步骤:
(1)定义基础枚举接口;
(2)对定义的枚举类型扩展一个存储枚举值的属性和存储中文的属性;
(3)枚举类型实现步骤(1)中的基础枚举接口,并实现获取枚举中文值的方法;
(4)定义一个返回值处理类;
(5)补全返回值中的枚举中文值;
(6)定义系统拦截器,配置该拦截器拦截所有系统请求,其拦截流程时序如图4所示;
(7)重写步骤(6)中定义的拦截器返回前处理方法,并将处理结果返回。
所述步骤(1)中基础枚举接口包含一个获取枚举中文值的方法;所述步骤(4)中返回值处理类包含一个公共方法其参数为请求的返回体;所述步骤(5)中对返回值的补全是通过循环递归实现,保证该返回值及其集合属性中的枚举类型均能被进行中文值补全;所述步骤(6)中对返回值的处理是通过拦截器方式自动实现。
本方法的详细说明如下:如图2所示,服务端定义一个基础枚举接口IBaseEnum,接口中定义一个枚举中文值的方法getDesc方法。具体枚举类型Enum实现IBaseEnum接口,扩展枚举值value属性和中文值desc属性,并提供获取获取枚举值和枚举名称的方法。Response为软件接口定义的具体返回值,包含type枚举类型属性,并提供了赋值和获取该属性的方法。
定义图2中的EnumHandle枚举处理类,该类包含handle枚举自动补全处理方法。该方法接收Object类型的参数,并返回处理后的Object类型返回值。具体实现算法参照如图3所示的枚举值中文值补全流程图。
(1)首先判断参数类型是否为集合类型;
(2)若参数是集合类型循环遍历该集合,声明一个JSONArray数组类型的最终返回值,取出每一个元素递归调用handle方法并将返回值保存在集合类型的返回值中;
(3)若参数不是集合类型,通过反射机制获取该类型所有属性值列表;
(4)按顺序在属性值列表中取出一个属性,判断该属性是否为集合类型,若为集合类型重复(2);
(5)若属性不是集合类,声明一个JSONObject类型的返回值;
(6)保存该属性及其值到返回值中;
(7)判断该属性是否为IBaseEnum类型;
(8)若属性是IBaseEnum类型则增加一个没有属性名+Desc为名称的属性,其属性值为getDesc()的返回值;
(9)判断是否遍历完所有属性;
(10)若未完成遍历则重复(4);
(11)若已遍历完所有属性则返回最终返回值。
定义拦截器EnumAdvice,并拦截所有请求的返回值。
EnumAdvic类重写ResponseBodyAdvice中的beforeBodyWrite方法,并将调用EnumHandle枚举处理类中的handle方法处理返回值参数,并将处理结果作为最终返回值返回。具体实现样例如下来返回值中的type属性。
机译: 中文/英文双语隐写术的方法和键盘
机译: 英文和中文的语音识别方法
机译: 自动翻译器,使用相同翻译器的自动翻译方法以及考虑中文语法特点的记录中英文的翻译器