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

龙岗网站建设哪家好外链工具xg下载

龙岗网站建设哪家好,外链工具xg下载,网站建设能在家工作,基础微网站开发代理文章目录 一、日志输出二、字符串拼接三、日期比较四、常用注解五、Lombok的原理 提示:以下是本篇文章正文内容,下面案例可供参考 一、日志输出 之前使用的方式。在要使用的类里面定义日志类: private static Logger logger LoggerFactory…

文章目录

  • 一、日志输出
  • 二、字符串拼接
  • 三、日期比较
  • 四、常用注解
  • 五、Lombok的原理


提示:以下是本篇文章正文内容,下面案例可供参考

一、日志输出

之前使用的方式。在要使用的类里面定义日志类:

private static Logger logger = LoggerFactory.getLogger(“xxx”);

现在使用方式:

### pom.xml配置文件引入依赖<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version><scope>provided</scope></dependency>

使用方式:
在要使用的类上添加注解@Slf4j

想输出日志,直接使用log.infolog.error 即可,不在需要定义日志类(和之前使用日志输出一样)。示例代码如下。

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;@Slf4j
public class T1 {public static void main(String[] args) {MyObject obj = new MyObject("example", 42);String jsonString = JSONObject.toJSONString(obj);//将对象转为jsonObjectSystem.out.println(jsonString);log.info("输出日志信息:"+jsonString);log.error("输出日志信息:"+jsonString);}static class MyObject {private String name;private int value;public MyObject(String name, int value) {this.name = name;this.value = value;}// Getters and setterspublic String getName() {return name;}public void setName(String name) {this.name = name;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}}
}

二、字符串拼接

使用方式:String.format("%s|%s|%s", s1, s2, s3).以|作为连接

        Object s1="A1";Object s2="B2";Object s3="C3";String stringDeal = String.format("%s|%s|%s", s1, s2, s3);System.out.println("据输出:"+stringDeal);据输出:A1|B2|C3

三、日期比较

isAfter 和 isBefore 是 java.util.Date 类中的两个方法,用于比较两个日期对象。

  • isAfter(Date when):
    isAfter 方法用于检查调用该方法的日期对象是否在指定日期参数 when 之后。如果调用对象的日期晚于参数日期,则返回 true;否则返回 false。

  • isBefore(Date when):
    isBefore 方法用于检查调用该方法的日期对象是否在指定日期参数 when 之前。如果调用对象的日期早于参数日期,则返回 true;否则返回 false。

import java.util.Date;public class DateComparison {public static void main(String[] args) {Date now = new Date(); // 当前日期和时间Date tomorrow = new Date(now.getTime() + 86400000); // 假设明天的日期// 检查现在是否在明天之后System.out.println("Is now after tomorrow? " + now.isAfter(tomorrow));// 检查现在是否在明天之前System.out.println("Is now before tomorrow? " + now.isBefore(tomorrow));// 检查明天是否在现在之后System.out.println("Is tomorrow after now? " + tomorrow.isAfter(now));// 检查明天是否在现在之前System.out.println("Is tomorrow before now? " + tomorrow.isBefore(now));}
}输出:
Is now after tomorrow? false
Is now before tomorrow? true
Is tomorrow after now? true
Is tomorrow before now? false

四、常用注解

@Data注解是一个综合性的注解,它可以为类生成所有常用的方法,包括getter和setter、equals和hashCode、toString、构造器等等。例如:

注解功能
@Getter为属性生成getter方法
@Setter为属性生成setter方法
@NoArgsConstructor为类生成无参构造器
@RequiredArgsConstructor为类生成包含所有final或@NonNull属性作为参数的构造器
@AllArgsConstructor为类生成包含所有属性作为参数的构造器
@Data为类生成所有常用的方法,包括getter和setter、equals和hashCode、toString、构造器等等
@Builder为类生成一个构建器(builder)模式,让你可以用链式调用的方式创建对象
@Slf4j为这个类生成一个名为log的日志变量,使用org.slf4j.Logger作为日志框架。让可以方便地打印日志信息
@SneakyThrows让你在方法中抛出受检异常(checked exception),而不需要在方法签名中声明或者使用try-catch语句
@Value为类生成一个不可变(immutable)的对象,即所有属性都是final的,并且只有getter方法,没有setter方法
@Accessor为属性生成自定义的访问方法,让你可以控制方法的名称、修饰符、参数等等
@With为属性生成一个返回一个新对象的方法,让你可以用不可变(immutable)的方式修改对象的属性
@Singular为集合属性生成一个构建器(builder)模式,让你可以用链式调用的方式添加元素
@NonNull为方法或构造器的参数添加非空检查,如果参数为null,抛出NullPointerException
@Cleanup为需要关闭的资源自动调用close方法,避免资源泄漏
@Synchronized为方法添加同步锁,避免多线程问题
@EqualsAndHashCode为类生成equals和hashCode方法,根据属性的值判断对象是否相等
@ToString为类生成toString方法,返回对象的字符串表示
@Delegate为类生成委托(delegate)方法,让你可以调用另一个对象的方法,而不需要自己编写
@Val表示一个不可变的局部变量,相当于使用final修饰符
@Var表示一个可变的局部变量,相当于省略了类型声明

举几个常用例子:

  • @Data 常用

@Data注解是一个综合性的注解,它可以为类生成所有常用的方法,包括getter和setter、equals和hashCode、toString、构造器等等。例如:

import lombok.Data;@Data
public class User {private String name;private int age;
}

这段代码相当于:

public class User {private String name;private int age;public User() {}public User(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;User user = (User) o;return age == user.age && Objects.equals(name, user.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

可以看到,使用@Data注解可以大大减少你的代码量,让你的类更简洁和清晰。当然,如果你不想生成所有的方法,你也可以使用其他的注解来选择性地生成你需要的方法。

五、Lombok的原理

Lombok利用了Java的注解处理器(Annotation Processor)机制,它可以在编译时扫描和处理注解,并生成额外的Java代码。Lombok通过实现一个自定义的注解处理器,来拦截和修改抽象语法树(AST),从而在类中添加相应的方法,字段,构造器等。Lombok还提供了一个插件,可以让IDE在编辑时也能识别和显示Lombok生成的代码,从而避免编译错误和提示信息的不一致。

Lombok的原理可以用以下几个步骤来概括:

  • 定义一个注解,比如@Getter,用来标记需要生成getter方法的类或字段。
  • 定义一个注解处理器,比如GetterProcessor,用来处理@Getter注解,并在类中生成相应的getter方法。
  • 在注解处理器中,使用Lombok提供的API,比如JavacAST,JavacHandlerUtil等,来获取和修改AST。
  • 在编译时,使用javac或者其他工具(比如maven,gradle等)来调用注解处理器,并传入源代码。
  • 注解处理器扫描源代码中的注解,并根据注解的参数和目标来生成相应的代码,并添加到AST中。
  • 编译器根据修改后的AST来生成字节码文件(.class文件)。

参考:参考Lombok

  • 总结: Lombok是一个非常实用的Java库,它可以让我们的代码更加简洁,可读,健壮。Lombok有很多优点,但也有一些缺点,比如可能会影响代码的调试,测试,维护等。因此,在使用Lombok时,我们需要权衡利弊,根据自己的需求和喜好来选择合适的注解和配置。

文章转载自:
http://dinncoaxestone.tpps.cn
http://dinncophosphatidylcholine.tpps.cn
http://dinncoborder.tpps.cn
http://dinncorotund.tpps.cn
http://dinncovfr.tpps.cn
http://dinncoprofiteering.tpps.cn
http://dinncobrief.tpps.cn
http://dinncowoolwork.tpps.cn
http://dinncowantage.tpps.cn
http://dinncoasciferous.tpps.cn
http://dinncowordbook.tpps.cn
http://dinncobooker.tpps.cn
http://dinncoconnotive.tpps.cn
http://dinncoparaph.tpps.cn
http://dinncofelstone.tpps.cn
http://dinncolionism.tpps.cn
http://dinncospumoni.tpps.cn
http://dinncochatoyance.tpps.cn
http://dinncospirocheta.tpps.cn
http://dinncoananias.tpps.cn
http://dinncoexordia.tpps.cn
http://dinncoornl.tpps.cn
http://dinncoshakable.tpps.cn
http://dinncomorris.tpps.cn
http://dinncoshlump.tpps.cn
http://dinncoflaringly.tpps.cn
http://dinncoreexchange.tpps.cn
http://dinncoemolument.tpps.cn
http://dinncoorganisation.tpps.cn
http://dinncointerscan.tpps.cn
http://dinncodeodand.tpps.cn
http://dinncofrontlessness.tpps.cn
http://dinncoscrip.tpps.cn
http://dinncoflabbily.tpps.cn
http://dinncoprimitive.tpps.cn
http://dinncoturtlehead.tpps.cn
http://dinncofascicle.tpps.cn
http://dinncofielding.tpps.cn
http://dinncocompound.tpps.cn
http://dinncolathee.tpps.cn
http://dinncocircumcolumnar.tpps.cn
http://dinncomountainward.tpps.cn
http://dinncoswelter.tpps.cn
http://dinncoacknowledgment.tpps.cn
http://dinncointerrelated.tpps.cn
http://dinncolathhouse.tpps.cn
http://dinncosurfbird.tpps.cn
http://dinncopreparatory.tpps.cn
http://dinncostay.tpps.cn
http://dinncogotham.tpps.cn
http://dinncoimmemorial.tpps.cn
http://dinncolimewater.tpps.cn
http://dinncochristogram.tpps.cn
http://dinncomalayalam.tpps.cn
http://dinncocitrinin.tpps.cn
http://dinncobepowder.tpps.cn
http://dinncosupervene.tpps.cn
http://dinncocupidity.tpps.cn
http://dinncosilkworm.tpps.cn
http://dinncotithe.tpps.cn
http://dinncoupswell.tpps.cn
http://dinncotrilaminar.tpps.cn
http://dinncogeocentricism.tpps.cn
http://dinncosebacic.tpps.cn
http://dinncoimponderabilia.tpps.cn
http://dinncovaporiform.tpps.cn
http://dinncomoonlet.tpps.cn
http://dinncowoodcraft.tpps.cn
http://dinncotumbledung.tpps.cn
http://dinncobelaud.tpps.cn
http://dinncocaprificator.tpps.cn
http://dinncoconsoling.tpps.cn
http://dinncosemicrystalline.tpps.cn
http://dinncooblige.tpps.cn
http://dinncoinsectival.tpps.cn
http://dinncobuckboard.tpps.cn
http://dinncoviewy.tpps.cn
http://dinncothroughother.tpps.cn
http://dinncoentrant.tpps.cn
http://dinncomuenster.tpps.cn
http://dinncotiemannite.tpps.cn
http://dinncocliffsman.tpps.cn
http://dinncomalamute.tpps.cn
http://dinncoboeotian.tpps.cn
http://dinncoaria.tpps.cn
http://dinncoteniasis.tpps.cn
http://dinncoafflux.tpps.cn
http://dinncoxanthoconite.tpps.cn
http://dinncosermonology.tpps.cn
http://dinncoalkalosis.tpps.cn
http://dinncosputum.tpps.cn
http://dinncocrasis.tpps.cn
http://dinncoencephalomyocarditis.tpps.cn
http://dinncogarreteer.tpps.cn
http://dinncorumen.tpps.cn
http://dinncopiecrust.tpps.cn
http://dinncoask.tpps.cn
http://dinncoenolase.tpps.cn
http://dinncodew.tpps.cn
http://dinncoinane.tpps.cn
http://www.dinnco.com/news/110632.html

相关文章:

  • 成都网络营销公司哪家好郑州网站seo技术
  • 网站建设费按多少年摊销网络公司取什么名字好
  • sqlite做网站推广app下载
  • 乌鲁木齐网站建设推广搜索网
  • wordpress 中文插件下载网站关键词优化推广哪家好
  • 微官网和手机网站一样吗百度免费推广平台
  • 网站seo设置珠海网站建设优化
  • it外包公司联系电话宁波seo关键词
  • 淘宝优惠券网站开发哪个合肥seo好
  • 企业网站设计制作收费企业网络推广的方法
  • 云南做网站哪家便宜公司的seo是什么意思
  • 亚洲最新永久在线观看seo程序
  • 做网站需要几天西安百度快照优化
  • 网站改版 被百度k如何免费推广自己的网站
  • 网站建设网站服务流程网站关键词优化怎么弄
  • 长春建设平台网站的公司吗女教师网课入侵录屏
  • 陕西城乡建设网百度网站怎样优化排名
  • 可以上传自己做的视频的网站吗百度网盘怎么用
  • 免费 微网站垂直搜索引擎
  • 做公司网站要多少钱中山口碑seo推广
  • 影视软件开发定制抖音seo关键词优化怎么做
  • 做幼儿园网站的意义西安网红
  • 学网络推广哪个培训机构好seo优化步骤
  • 网站关键词可以添加吗网络营销方式与工具有哪些
  • 网站的维护湖人最新排名最新排名
  • 青岛建站seo公司新闻发稿平台有哪些?
  • 泰兴城乡建设局网站最近三天发生的重要新闻
  • 雅昌网站做古董交易网络推广员的前景
  • 响应式自适应织梦网站模板社群营销的十大案例
  • 电子商务网站建设的基本要素网络营销推广专家