Lombok注解之@Setter

文章介绍了Lombok的@Setter注解,用于自动为类的属性生成setter方法。它不会为static和final修饰的字段生成setter,提供了AccessLevel来指定setter的访问级别,并可以通过onMethod和onParam为生成的方法和参数添加注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用范围

  • 类:为类的所有属性提供setter方法
  • 属性:为该属性提供setter方法

2.介绍

为属性添加set方法。

注意:static、final修饰的字段不提供setter方法,因为static修饰的属性需要类名调用,而final修饰的属性不可修改

3.属性

@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface Setter {
    AccessLevel value() default AccessLevel.PUBLIC;

    Setter.AnyAnnotation[] onMethod() default {};

    Setter.AnyAnnotation[] onParam() default {};

    /** @deprecated */
    @Deprecated
    @Retention(RetentionPolicy.SOURCE)
    @Target({})
    public @interface AnyAnnotation {
    }
}
  • value:设置生成setter方法的作用域修饰符,默认为PUBLIC修饰符
    •     @Setter(value = AccessLevel.PUBLIC):public修饰
    •     @Setter(value = AccessLevel.PACKAGE):默认修饰符,无
    •     @Setter(value = AccessLevel.PROTECTED):protected修饰符
    •     @Setter(value = AccessLevel.PRIVATE):private修饰符
    •     @Setter(value = AccessLevel.MODULE) :默认修饰符,无
    •     @Setter(value = AccessLevel.NONE):不生成setter方法
  • onMethod:用于给生成的setter方法加注解
  • onParam:用于给生成的setter方法参数加注解

4.实例

package org.learn.lombok;

import lombok.Setter;

@Setter
public class DemoSetter {
    private String privateVar;
    public String publicVar;
    String defaultVar;
    protected String protectedVar;
    public final String finalVar = "";
    public static String staticVar = "";
    public volatile String volatileVar = "";
    public static final String staticFinalVar = "";
}

编译后:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.learn.lombok;

public class DemoSetter {
    private String privateVar;
    public String publicVar;
    String defaultVar;
    protected String protectedVar;
    public final String finalVar = "";
    public static String staticVar = "";
    public volatile String volatileVar = "";
    public static final String staticFinalVar = "";

    public DemoSetter() {
    }

    public void setPrivateVar(String privateVar) {
        this.privateVar = privateVar;
    }

    public void setPublicVar(String publicVar) {
        this.publicVar = publicVar;
    }

    public void setDefaultVar(String defaultVar) {
        this.defaultVar = defaultVar;
    }

    public void setProtectedVar(String protectedVar) {
        this.protectedVar = protectedVar;
    }

    public void setVolatileVar(String volatileVar) {
        this.volatileVar = volatileVar;
    }
}

package org.learn.lombok;

import lombok.Setter;
import org.learn.lombok.annotation.Method;
import org.learn.lombok.annotation.Param;

public class DemoSetter {
    @Setter(onMethod_ = {@Method}, onParam_ = {@Param})
    private String name;

}

编译后:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.learn.lombok;

import org.learn.lombok.annotation.Method;
import org.learn.lombok.annotation.Param;

public class DemoSetter {
    private String name;

    public DemoSetter() {
    }

    @Method
    public void setName(@Param String name) {
        this.name = name;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值