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

做网站维护的是什么公司中天建设集团有限公司西南分公司

做网站维护的是什么公司,中天建设集团有限公司西南分公司,为什么企业要建设自己的企业文化,做一下网站需要什么条件文章目录 Lombok 的实现原理概述以 Builder 为例#xff1a;解析 Lombok 如何生成 Builder 模式示例代码#xff1a;没有 Lombok 的 Builder 模式使用 Lombok 的 Builder 简化代码 Lombok 如何实现 Builder#xff1a;源码解析案例演示#xff1a;自定义构造逻辑Lombok 的代… 文章目录 Lombok 的实现原理概述以 Builder 为例解析 Lombok 如何生成 Builder 模式示例代码没有 Lombok 的 Builder 模式使用 Lombok 的 Builder 简化代码 Lombok 如何实现 Builder源码解析案例演示自定义构造逻辑Lombok 的代码生成优势总结推荐阅读文章 Lombok 作为 Java 开发中的“魔法工具”极大简化了样板代码的编写需求比如 getter/ setter、构造函数、 toString、 equals、 hashCode 以及 Builder 模式等。然而很多人可能好奇Lombok 是如何实现的为何我们只需要一个注解就能自动生成这些代码呢 本文将通过解析 Lombok 的实现原理并结合 Builder 注解的具体示例带你一步步揭开 Lombok 的神秘面纱。 Lombok 的实现原理概述 Lombok 的核心机制在于注解处理器Annotation Processor和抽象语法树AST操作。在 Java 编译阶段Lombok 的注解处理器会捕捉和解析源代码中的注解然后通过修改 AST抽象语法树来添加新的方法、构造器等代码最终生成编译后的字节码。 注解处理器Lombok 利用 JSR 269 提供的注解处理 API如 javax.annotation.processing.Processor 接口来捕捉 Java 编译过程中的注解。Lombok 的注解处理器会在编译时扫描项目中的 Lombok 注解如 Getter、Setter然后调用相应的代码生成逻辑。 修改 ASTLombok 利用 Javac 或 Eclipse 等编译器内部 API 直接操作抽象语法树将新方法或字段等直接插入到 AST 中实现代码的“动态扩展”。 编译输出经过 Lombok 注解处理的代码在 AST 被修改后会直接编译成字节码不再额外生成 .java 文件。这就是 Lombok 生成的代码能在编译期生效而不影响源码的原因。 以 Builder 为例解析 Lombok 如何生成 Builder 模式 示例代码没有 Lombok 的 Builder 模式 首先我们来看一个传统的 Builder 模式实现 public class User {private String name;private int age;private User(Builder builder) {this.name builder.name;this.age builder.age;}public static class Builder {private String name;private int age;public Builder name(String name) {this.name name;return this;}public Builder age(int age) {this.age age;return this;}public User build() {return new User(this);}} }// 使用 User user new User.Builder().name(Alice).age(25).build();这种方式虽然有效但代码略显冗长特别是当类的字段较多时Builder 类的代码量将成倍增加。 使用 Lombok 的 Builder 简化代码 通过 Lombok 的 Builder 注解我们可以轻松实现 Builder 模式大幅减少样板代码 import lombok.Builder;Builder public class User {private String name;private int age; }// 使用 User user User.builder().name(Alice).age(25).build();在此代码中我们仅需一个 Builder 注解Lombok 就能自动生成 Builder 类并提供链式调用的构建方法。这背后就是 Lombok 操作 AST 的“魔法”。 Lombok 如何实现 Builder源码解析 注解处理器捕获 BuilderLombok 的注解处理器会在编译时扫描 Builder 注解识别到需要应用 Builder 模式的类。AST 操作Lombok 利用编译器的 AST API动态插入 UserBuilder 类并为每个字段生成 setter 方法。最终的代码结构会类似于我们手写的传统 Builder 类。生成静态 builder() 方法在目标类 User 中插入一个 builder() 静态方法用于实例化 UserBuilder 类。这使得我们可以通过 User.builder() 调用构建对象。 在编译后的字节码中Lombok 自动生成的代码结构如下 public class User {private String name;private int age;public static UserBuilder builder() {return new UserBuilder();}public static class UserBuilder {private String name;private int age;public UserBuilder name(String name) {this.name name;return this;}public UserBuilder age(int age) {this.age age;return this;}public User build() {return new User(this.name, this.age);}} }Lombok 会自动将这些代码生成并编译为字节码文件因此我们不需要额外编写 UserBuilder 类。 案例演示自定义构造逻辑 有时我们可能希望在构造过程中加入一些自定义逻辑例如对字段进行校验。让我们看看 Lombok 的 Builder 如何与自定义构造逻辑结合。 import lombok.Builder;Builder public class Product {private String name;private double price;private Product(String name, double price) {if (price 0) {throw new IllegalArgumentException(Price cannot be negative);}this.name name;this.price price;} }// 使用 Product product Product.builder().name(Laptop).price(999.99).build();在此代码中我们手动定义了 Product 类的构造方法Builder 会调用此构造方法因此在创建 Product 对象时会触发校验逻辑确保价格不为负数。 Lombok 的代码生成优势 Lombok 的注解处理机制和 AST 操作带来了几个显著优势 减少样板代码开发者只需声明字段和注解即可Lombok 会自动生成所有必需的构造方法和构建器方法。可读性提升通过使用 Builder 等注解代码逻辑更加简洁和易读。灵活性Lombok 可以与手写代码兼容允许在 Builder 模式下添加自定义构造方法以满足业务需求。编译期生成Lombok 所有的代码生成操作均在编译期完成不会影响运行期性能。 总结 Lombok 的 Builder 是基于注解处理器和 AST 操作的强大工具极大地简化了 Java 中常见的样板代码尤其是 Builder 模式的实现。Lombok 不仅支持简单的对象构建还允许开发者通过自定义构造方法来实现更复杂的初始化逻辑。 Lombok 的底层实现让我们不用关注复杂的 AST 操作只需简单的注解即可实现强大的构建功能。通过对 Builder 工作原理的理解我们可以更深入地掌握 Lombok并在需要时进行灵活调整。希望本文能帮助你更好地利用 Lombok 的“魔法”简化开发过程 推荐阅读文章 探索 Lombok 的 Builder 和 SuperBuilder避坑指南一 为什么用了 Builder 反而报错深入理解 Lombok 的“暗坑”与解决方案二 由 Spring 静态注入引发的一个线上T0级别事故真的以后得避坑 如何理解 HTTP 是无状态的以及它与 Cookie 和 Session 之间的联系 HTTP、HTTPS、Cookie 和 Session 之间的关系 什么是 Cookie简单介绍与使用方法 什么是 Session如何应用 使用 Spring 框架构建 MVC 应用程序初学者教程 有缺陷的 Java 代码Java 开发人员最常犯的 10 大错误 把握Java泛型的艺术协变、逆变与不可变性一网打尽 Java Spring 中常用的 PostConstruct 注解使用总结 如何自定义一个自己的 Spring Boot Starter 组件从入门到实践 解密 Redis如何通过 IO 多路复用征服高并发挑战 线程 vs 虚拟线程深入理解及区别 深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别 10大程序员提升代码优雅度的必杀技瞬间让你成为团队宠儿
http://www.dnsts.com.cn/news/218123.html

相关文章:

  • 钓鱼网站链接怎么做网站如何做软文推广
  • 谈谈对电子商务网站建设与管理室内设计图制作软件
  • 余姚做网站公司购物网站排名榜
  • 网站 百度地图太原seo按天计费
  • 扬州哪里做网站店铺位置怎么免费注册定位
  • 河北建站公司北京建设厅网站
  • 农家乐网站 建设哪些人不适合学平面设计
  • 重庆排名优化整站优化免费seo在线工具
  • 网站建设 统一质量标准wordpress放谷歌代码
  • 公司网站推广计划书怎么做python语言入门
  • 葫芦岛市住房和城乡建设局网站制作自己的网站教程
  • 网站备案换ipwordpress 分类全文
  • 网上做代销上哪个网站莱芜新闻主持人名单
  • 池州商城网站开发郑州seo优化顾问阿亮
  • 单位建设网站硬件安徽省建设质量安全协会网站
  • 网站开发的一般过程小程序开发教程
  • 广州市建设工程定额管理网站wordpress 敏感词过滤
  • 欧美平面设计网站网络服务的服务提供者包括( )
  • 石岩网站建设手机在线logo免费设计
  • 知名高端网站建设报价阿里云网站域名证书
  • 个人音乐网站开发新手怎么样学做网站
  • 淄博网站建设推广优化如何衡量一个网站的价值
  • 企业为什么选择网站建设网站举报多久有结果
  • 微信微网站统计怎么做类似淘宝一样的网站吗
  • 做盗版电影网站赚钱龙岗网站建设公司怎么样
  • 重庆企业网站的推广西部数码网站助手4.0
  • 网站建设谈单思路手机网页代码
  • 南京营销型网站制作网站群发手机短信
  • 那个网站做境外自由行便宜南充建设企业网站
  • 义乌网站建设公司排名网站的页面布局是什么样的