当前位置: 首页 > news >正文

北京网站开发不限年龄wordpress微信扫码登录

北京网站开发不限年龄,wordpress微信扫码登录,免费软件群,江门有什么网站推广作为开发人员#xff0c;我们经常鄙视手动进行重复工作的人员。 我们认为#xff0c; 他们应该实现这一目标 。 尽管如此#xff0c;我们还是进行与编码有关的所有活动。 当然#xff0c;我们使用的高级IDE可以为我们执行一些重构#xff0c;但这基本上就是结束了。 我们… 作为开发人员我们经常鄙视手动进行重复工作的人员。 我们认为 他们应该实现这一目标 。 尽管如此我们还是进行与编码有关的所有活动。 当然我们使用的高级IDE可以为我们执行一些重构但这基本上就是结束了。 我们不品尝我们自己的药。 让我们改变它。 让我们看看如何将代码编写为 生成我们必须编写的无聊的重复性Java代码 分析我们的代码以回答有关它的一些问题 做一些代码处理和重构 好消息是我们将使用一组库来实现所有这些功能JavaParser和它的弟弟JavaSymbolSolver。 入门 好吧这很简单只需将JavaSymbolSolver添加到您的依赖项中即可。 什么是JavaSymbolSolver 它是JavaParser的补充库为它提供了一些相当强大的功能这些功能对于回答关于代码的更复杂的问题是必需的。 JavaSymbolSolver依赖于JavaParser因此您只需要添加JavaSymbolSolverMaven或Gradle也会为您提供JavaParser。 我假设您知道如何使用Maven或Gradle。 如果您不喜欢请停止阅读并开始学习 使用javaparser生成代码 在某些情况下您可能需要生成Java代码。 例如您可能想基于一些外部数据生成代码例如数据库架构或REST API。 您可能还需要将其他语言翻译成Java。 例如我设计了用于生活的DSL而当用户只能看到我为他们构建的DSL时我经常在后台生成Java并将其编译。 有时候您只想生成样板代码就像我以前在使用JavaEE和所有这些层谁能记住编写EJB的过程很无聊时使用dp一样。 无论生成代码的原因是什么都可以使用JavaParser。 JavaParser不会提出问题它只是在帮助您。 让我们看看如何生成一个具有两个字段的类一个构造函数和两个getter。 没什么特别先进的但是它应该使您了解使用JavaParser进行代码生成的含义。 CompilationUnit cu new CompilationUnit();cu.setPackageDeclaration(jpexample.model);ClassOrInterfaceDeclaration book cu.addClass(Book); book.addField(String, title); book.addField(Person, author);book.addConstructor(Modifier.PUBLIC).addParameter(String, title).addParameter(Person, author).setBody(new BlockStmt().addStatement(new ExpressionStmt(new AssignExpr(new FieldAccessExpr(new ThisExpr(), title),new NameExpr(title),AssignExpr.Operator.ASSIGN))).addStatement(new ExpressionStmt(new AssignExpr(new FieldAccessExpr(new ThisExpr(), author),new NameExpr(author),AssignExpr.Operator.ASSIGN))));book.addMethod(getTitle, Modifier.PUBLIC).setBody(new BlockStmt().addStatement(new ReturnStmt(new NameExpr(title))));book.addMethod(getAuthor, Modifier.PUBLIC).setBody(new BlockStmt().addStatement(new ReturnStmt(new NameExpr(author))));System.out.println(cu.toString()); 最后一条指令将打印出您的代码并且可以立即进行编译。 您可能希望将代码保存到文件中而不是打印它但是您明白了。 使用javaparser分析代码 您可能会询问有关代码的许多不同问题以及许多不同的分析方式。 首先让我们解析项目的所有源文件 // Parse all source files SourceRoot sourceRoot new SourceRoot(myProjectSourceDir.toPath()); sourceRoot.setParserConfiguration(parserConfiguration); ListParseResult parseResults sourceRoot.tryToParse();// Now get all compilation unitsList allCus parseResults.stream() .filter(ParseResult::isSuccessful) .map(r - r.getResult().get()) .collect(Collectors.toList()); 我们还创建一个方法来获取所有编译单元中特定类型的所有节点 public static List getNodes(List cus, Class nodeClass) {List res new LinkedList();cus.forEach(cu - res.addAll(cu.findAll(nodeClass)));return res; } 然后让我们开始提问例如 有多少种方法采用3个以上的参数 long n getNodes(allCus, MethodDeclaration.class) .stream() .filter(m - m.getParameters().size() 3).count();System.out.println(N of methods with 3 params: n); 大多数方法中的三个顶级类别是什么 getNodes(allCus, ClassOrInterfaceDeclaration.class) .stream() .filter(c - !c.isInterface()) .sorted(Comparator.comparingInt(o - -1 * o.getMethods().size())) .limit(3) .forEach(c - System.out.println(c.getNameAsString() : c.getMethods().size() methods)); 好的您知道了。 现在去检查您的代码。 您没有什么可隐藏的对吗 使用javaparser转换代码 假设您是某个库的满意用户。 几年前您已将其添加到依赖项中并从此以后就愉快地使用它。 时间已经过去您已经在整个项目中越来越多地使用它。 有一天该有用库的新版本出现了您决定要更新依赖项。 现在他们在新库中删除了您正在使用的方法之一。 确保已弃用它并将其命名为oldMethod 可能告诉您一些信息……。 现在oldMethod已被newMethod取代。 newMethod具有3个参数前两个参数与oldMethod相同只是将它们取反第三个参数是布尔值应将其设置为true以获得与oldMethod相同的行为。 您有对oldMethod的数百个调用…是否要一个一个地更改它们 好吧也许如果您按小时收费。 或者您可以只使用JavaParser代替。 首先让我们在某个文件即JavaParser parlanse中的CompilationUnit中找到对旧方法的所有调用 myCompilationUnit.findAll(ethodCallExpr.class).stream().filter(m - m.resolveInvokedMethod() .getQualifiedSignature() .equals(foo.MyClass.oldMethod(java.lang.String, int))) .forEach(m - m.replace(replaceCallsToOldMethod(m))); 然后让我们将旧调用转换为新调用 public MethodCallExpr replaceCallsToOldMethod(MethodCallExpr methodCall) { MethodCallExpr newMethodCall new MethodCallExpr(methodCall.getScope().get(), newMethod); newMethodCall.addArgument(methodCall.getArgument(1)); newMethodCall.addArgument(methodCall.getArgument(0)); newMethodCall.addArgument(new BooleanLiteralExpr(true)); return newMethodCall; } 太酷了现在我们只需要获取修改后的CompilationUnit的代码并将其保存到Java文件即可。 newMethod使用寿命长 在哪里可以找到有关javaparser的更多信息 我们还没有看到JavaParser的众多功能 JavaParser可以处理注释弄清楚它们所引用的元素 JavaParser可以进行词法保留或漂亮的打印 您的选择 它可以找出一个方法调用指向哪个方法声明某个类具有哪个祖先以及更多地归功于与JavaSymbolSolver的集成。 它可以将AST导出为JSONXMLYAML甚至可以使用Graphviz生成图表 您在哪里可以了解所有这些东西 这里有一些资源 我们写了一本关于JavaParser和JavaSymbolSolver的书可免费获得。 它被命名为JavaParserVisited Matozoid伟大的博客 他是JavaParser的光荣维护者这是不可阻挡的力量每隔一个星期就会推出新版本。 谁更了解JavaParser 我关于语言工程的拙劣博客 。 我是JavaSymbolSolver的维护者我尝试作为JavaParser中的第二命令来提供帮助。 遥远的第二个55357;56898; 该项目的网站 目前内容还不是很丰富但是我们正在努力 烦恼频道 您有问题吗 在那儿问他们 摘要 几乎没有情况可以学习如何使用一种工具来完成三件不同的事情。 通过学习如何使用JavaParser您可以分析生成和修改Java代码。 好吧感觉就像圣诞节不是吗 翻译自: https://www.javacodegeeks.com/2017/12/javaparser-generate-analyze-modify-java-code.html
http://www.pierceye.com/news/548020/

相关文章:

  • 苏州网站优化排名推广企业网站建设价格
  • 在线制作论坛网站wordpress建立好的网站
  • 网站的功能规范商城网站静态模板下载
  • 双语言网站源码制作网页的软件哪个好
  • 政务网站建设需求网站首页页面代码
  • 网站产品详情页怎么做的用服务器做网站空间
  • 河北网站制作报价长春市建设技工学校网站
  • 盘锦做网站专家常州网站建设企业网站制作
  • 关于建设网站的报告wordpress 视频 广告插件
  • 生态养殖网站模板网赌网站建设多少钱
  • wordpress is长沙百度提升优化
  • 福州网站建设哪个好网页被禁止浏览怎么解决
  • 缩短链接的网站磁力猫引擎
  • 佛山网站到首页排名网站开发招标任务书
  • 网站建设相关专业手机网站建设软件有哪些
  • 做网站编辑累吗平台推广策划
  • 景区网站模板深圳中建南方建设集团网站
  • 深圳市网站建设有补贴吗特殊教育学校网站建设方案
  • 专业电影网站建设建e全景效果图
  • 优惠券网站怎么做的哪里有网站制作
  • 单页网站搭建购买一级域名做网站
  • 优秀设计作品的网站单页网站仿制教程
  • 品牌形象网站有哪些ajs17网站建设
  • 微信公众号手机网站开发文成网站制作
  • 中邮通建设咨询有限公司官方网站网站升级及政务新媒体建设方案
  • 网站建设服务费会计分录宁波市住房与城乡建设部网站
  • 如何申请cn域名做网站wordpress 企业网站主题
  • 网站建设 锋云科技公司东莞有什么比较好的网站公司
  • json取数据做网站做问卷哪个网站好
  • 做特产网站的原因手机网站建设技术