【每天学个新注解】Day 1 Lombok注解简解(〇)—@Getter、@Setter、@ToString、@EqualsAndHashCode、@Constructor

Lombok一句话介绍:省去很多繁琐的 “样板代码” 编码工作。

例:Getter、Setter以及构造方法任何Bean中都不可获取,但是创建Bean时添加他们是繁琐的!

public class People {
    private String name;
	/**
	* Getter Setter 构造方法任何Bean中都不可获取,但是创建Bean时添加他们是繁琐的!
	*/
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    
    public People(String name, int age, String sex) {
        this.name = name;
    }
    public People() {}
}

@Getter、@Setter

自动在 Java 类中生成 getter 和 setter 方法。

1、如何使用

  • 需要getter 和 setter 方法的地方添加,可以在类或者字段上加上这两个注解,Lombok 就会自动为你生成 getter 和 setter 方法。
  • 如果只为某个特定的字段生成 getter 或者 setter 方法,直接将注解加到字段上。
  • Lombok 还允许你自定义生成的 getter 和 setter 方法的访问级别,如:@Getter(AccessLevel.PROTECTED),这样 getter 方法就会被设置为 protected,而 setter 方法则仍然是 public。

2、代码示例

例:

@Getter
@Setter
public class People {
    private String name;
    private int age;
    private String sex;
}

编译后:自动生成了getter 和 setter 方法。
在这里插入图片描述

@ToSrting

自动在 Java 类中生成 toString 方法。

1、如何使用

  • 类上添加这个注解,Lombok 就会自动为你生成 toString 方法。
  • Lombok 为 @ToString 提供了一些选项,让你可以进一步自定义生成的 toString 方法。
    includeFieldNames:是否在输出中包含字段名,默认为 true。
    exclude:排除某些字段,不在 toString 的输出中显示。
    callSuper:是否调用超类的 toString 方法,默认为 false。
    of:要在 toString 的输出中显示的字段。

2、代码示例

例:

@ToString(includeFieldNames = true, callSuper = true,exclude = {"sex"})
public class People {
    private String name;
    private int age;
    private String sex;
}

编译后:includeFieldNames = true 所以有字段名,callSuper = true 所以调用了super的toString方法,exclude = {“sex”} 所以toString中没有sex属性。(另外of的优先级大于exclude,如果你写exclude = {“sex”},of={“sex”},那么仅有sex会出现的toString中)
在这里插入图片描述

@EqualsAndHashCode

自动在 Java 类中生成 Equals和HashCode方法。
用于比较对象的相等性和生成对象的哈希码。

1、如何使用

  • 类上添加这个注解,Lombok 就会自动为你生成 equals 和 hashCode 方法。
  • Lombok 提供了一些选项,让你可以自定义 equals 和 hashCode 方法的行为,与@ToString类似。
    doNotUseGetters:是否直接使用字段值而非调用 getter 方法,默认为 false。
    callSuper:是否在 equals 和 hashCode 方法中调用超类的方法,默认为 false。
    exclude:排除某些字段,不在 equals 和 hashCode 方法中使用。
    of:明确要在 equals 和 hashCode 方法中使用的字段。

2、代码示例

例:

@EqualsAndHashCode(exclude = "age")
public class People {
    private String name;
    private int age;
    private String sex;
}

编译后:
在这里插入图片描述

@Constructor

自动在 Java 类中生成 构造方法。
并没有@Constructor注解,Lombok实现自动生成注解为以下三个@NoArgsConstructor,@RequiredArgsConstructor 和 @AllArgsConstructor,这里@Constructor仅做指代。

  • @NoArgsConstructor:这个注解会让 Lombok 为你的类生成一个无参数的构造方法。非常简单,对吧?
  • @RequiredArgsConstructor:这个注解稍微复杂一些,它会让 Lombok 为你的类生成一个构造方法,构造方法的参数是类中所有需要特殊处理的字段,也就是说,标记为 final 和 @NonNull (此注解会在后面提到) 的字段会被作为参数。
  • @AllArgsConstructor:这个注解会让 Lombok 为你的类生成一个包含所有字段的构造方法。

1、如何使用

  • 类上添加这些注解,Lombok 就会按照要求生成相应的构造方法。
  • Lombok 提供了一些选项,让你可以自定义构造方法的行为。
    @NoArgsConstructor(force = true):当有 final 字段没有被初始化时,这个选项可以强制 Lombok 生成一个无参数的构造方法,并将所有 final 字段初始化为其默认值(0、false、null等)。
    @AllArgsConstructor(access = AccessLevel.PROTECTED):这个选项可以用来改变生成的构造方法的访问级别。
    @RequiredArgsConstructor(staticName = “of”):这个选项可以让 Lombok 为你生成一个静态的工厂方法,而不是一个构造方法。

2、代码示例

例:

@AllArgsConstructor
@RequiredArgsConstructor
@NoArgsConstructor(force = true)
public class People {
    private String name;
    private final int age;
    private String sex;
}

编译后:分别生成有参、无参以及标记为 final 的参数构造方法,并且age是final不能存在有参构造方法,配置为@NoArgsConstructor(force = true)会为其赋默认值。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值