从声明性json生成代码的helper包

lance的Python项目详细描述


兰斯

lance是一个从代码生成代码的库。在

使用

让我们看看如何使用lance生成代码

爪哇

类生成

下面是一个json文件,它被输入到lance库以生成java代码

{"fqcn":"com.susamn.MetaClass","type":"CLASS"}

将java代码生成为:

^{pr2}$
  • fqcn完全限定类名

看起来很简单对吧。让我们看看一些有用的代码生成。下面是该文件的json文件:

{"generate_path":"","classes":[{"fqcn":"com.susamn.Meta","type":"CLASS","extends":{"fqcn":"com.susamn.Parent","generic_types":["java.lang.Integer"]},"implements":[{"fqcn":"java.io.Serializable","generic_types":["java.lang.Integer"]},{"fqcn":"org.apache.Logger","generic_types":["com.susamn.Root","java.lang.String"]}],"annotations":[{"fqcn":"com.susamn.ClassLevelAnnotation1"},{"fqcn":"com.susamn.ClassLevelAnnotation2","data":{"key1":{"type":"INTEGER","value":23}}}],"attributes":[{"name":"logger","mode":"public","type":{"of":"CLASS","fqcn":"org.slf4j.api.Logger"},"accessors":true,"initialized_form":{"form":"LoggerFactory.getLogger(RiskAssessmentController.class)","imports":["org.apache.logger.api.LoggerFactory","com.susamn.RiskAssessmentController"]}},{"name":"foo","mode":"private","type":{"of":"STRING"},"accessors":true,"initialized_form":{"form":"\"Foo_Value\"","imports":[]},"annotation_level":"GETTER_ANNOTATION","annotations":[{"fqcn":"com.susamn.Annotation1","data":{"key1":{"type":"INTEGER","value":23}}},{"fqcn":"com.susamn.Annotation2","data":{"key1":{"type":"STRING","value":"String data"}}}]},{"name":"foobar","mode":"private","type":{"of":"STRING"},"accessors":true,"annotations":[{"fqcn":"com.susamn.Annotation3"},{"fqcn":"com.susamn.Annotation4","data":{"key1":{"type":"INTEGER","value":23}}}]},{"name":"bar","mode":"private","type":{"of":"LIST_STRING"},"accessors":true},{"name":"far","mode":"private","type":{"of":"LIST_INTEGER"},"accessors":true},{"name":"boo","mode":"private","type":{"of":"LIST_CLASS","fqcn":"com.susamn.Custom"},"accessors":true},{"name":"doo","mode":"private","type":{"of":"INTEGER"},"accessors":true},{"name":"dar","mode":"private","type":{"of":"FLOAT"}}],"methods":[{"name":"processRequest","mode":"public","type":{"of":"STRING"},"inputs":[{"name":"body","type":{"of":"STRING","annotations":[{"fqcn":"com.susamn.ResponseBody"}]}},{"name":"clazz","type":{"of":"LIST_CLASS","fqcn":"com.susamn.Custom2"}},{"type":{"of":"CLASS","fqcn":"org.springframework.web.mvc.HttpEntity","generic_types":["java.lang.String"]}}],"annotations":[{"fqcn":"com.susamn.Annotation11","data":{"key1":{"type":"INTEGER","value":78.10}}},{"fqcn":"com.susamn.Annotation10","data":{"key1":{"type":"INTEGER","value":12.19}}}]},{"name":"syncRequest","mode":"public","type":{"of":"CLASS","fqcn":"org.springframework.web.mvc.HttpEntity","generic_types":["GENERIC"]},"inputs":[{"name":"value","type":{"of":"STRING","annotations":[{"fqcn":"com.susamn.ResponseBody"}]}}]},{"name":"deleteRequest","mode":"public","type":{"of":"CLASS","fqcn":"org.springframework.web.mvc.HttpEntity","generic_types":["java.lang.Boolean"]},"inputs":[{"type":{"of":"STRING","annotations":[{"fqcn":"com.susamn.ResponseBody"}]}}],"body":{"form":["Map<Integer,RiskAssessment> map = new HashMap<>();","map.put(1, new RiskAssessment());"],"imports":["java.util.Map","java.util.HashMap","com.susamn.RiskAssessment"]}}]}]}

这将生成java代码:

packagecom.susamn;importcom.susamn.Annotation1;importcom.susamn.Annotation10;importcom.susamn.Annotation11;importcom.susamn.Annotation2;importcom.susamn.Annotation3;importcom.susamn.Annotation4;importcom.susamn.ClassLevelAnnotation1;importcom.susamn.ClassLevelAnnotation2;importcom.susamn.Custom;importcom.susamn.Custom2;importcom.susamn.Parent;importcom.susamn.ResponseBody;importcom.susamn.RiskAssessment;importcom.susamn.RiskAssessmentController;importcom.susamn.Root;importjava.io.Serializable;importjava.lang.Boolean;importjava.lang.Integer;importjava.lang.String;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.Logger;importorg.apache.logger.api.LoggerFactory;importorg.slf4j.api.Logger;importorg.springframework.web.mvc.HttpEntity;@ClassLevelAnnotation1@ClassLevelAnnotation2(key1=23)publicclassMetaextendsParent<Integer>implementsSerializable<Integer>,Logger<Root,String>{publicLoggerlogger=LoggerFactory.getLogger(RiskAssessmentController.class);privateList<String>bar;privateList<Integer>far;privateList<Custom>boo;privateintdoo;privatefloatdar;@Annotation1(key1=23)@Annotation2(key1="String data")privateStringfoo="Foo_Value";@Annotation3@Annotation4(key1=23)privateStringfoobar;publicLoggergetLogger(){returnthis.logger;}publicvoidsetLogger(Loggerlogger){this.logger=logger;}publicStringgetFoo(){returnthis.foo;}publicvoidsetFoo(Stringfoo){this.foo=foo;}publicStringgetFoobar(){returnthis.foobar;}publicvoidsetFoobar(Stringfoobar){this.foobar=foobar;}publicList<String>getBar(){returnthis.bar;}publicvoidsetBar(List<String>bar){this.bar=bar;}publicList<Integer>getFar(){returnthis.far;}publicvoidsetFar(List<Integer>far){this.far=far;}publicList<Custom>getBoo(){returnthis.boo;}publicvoidsetBoo(List<Custom>boo){this.boo=boo;}publicintgetDoo(){returnthis.doo;}publicvoidsetDoo(intdoo){this.doo=doo;}@Annotation11(key1=78.1)@Annotation10(key1=12.19)publicStringprocessRequest(@ResponseBodyStringbody,List<Custom2>clazz,HttpEntity<String>val0){}publicHttpEntity<?>syncRequest(@ResponseBodyStringvalue){}publicHttpEntity<Boolean>deleteRequest(@ResponseBodyStringval0){Map<Integer,RiskAssessment>map=newHashMap<>();map.put(1,newRiskAssessment());}}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android Studio中的Java错误,但不是Eclipse   java如何使用jsp更新数据库中的文件?   jsoup如何在java中从较大的子字符串中提取多个子字符串?   java RestFB:当页面的URI具有页面名称时,无法获取页面帖子   java可以让Maven做我们在ANT构建中正在做的事情。xml   java如何在JasperReports中动态包含来自Servlet的图像?   java在hibernate中用新集更新旧集   从导出为可运行的Java应用程序创建、解析和管理XML文件。jar文件   在Java中使用数组的基础知识   调试从JAVA程序调用的MATLAB函数   java实现了Iterable hands错误大小的备份   JAVA木卫一。FileNotFoundException:请求的资源不可用   java Android Spring 1.0.1使用基本身份验证删除   java如何使用com解析和对象在一个数字数组中的值。fasterxml。杰克逊。数据绑定。对象映射器   比较两个字符串时发生java NullPointerException