Java 在龙目山中省略一个二传手/接球手

Java 在龙目山中省略一个二传手/接球手,java,lombok,Java,Lombok,我想在Lombok中使用一个数据类。因为它有十几个字段,所以我用@Data对它进行了注释,以便生成所有的setter和getter。但是,有一个特殊的字段,我不希望实现访问器 Lombok如何省略此字段?您可以将访问级别传递给@Getter和@Setter注释。这对于使getter或setter受保护或私有非常有用。它还可用于覆盖默认值 使用@Data,默认情况下,您可以公开访问访问器。现在,您可以使用特殊访问级别NONE完全忽略访问者,如下所示: @Getter(AccessLevel.NON

我想在Lombok中使用一个数据类。因为它有十几个字段,所以我用
@Data
对它进行了注释,以便生成所有的setter和getter。但是,有一个特殊的字段,我不希望实现访问器


Lombok如何省略此字段?

您可以将访问级别传递给
@Getter
@Setter
注释。这对于使getter或setter受保护或私有非常有用。它还可用于覆盖默认值

使用
@Data
,默认情况下,您可以公开访问访问器。现在,您可以使用特殊访问级别
NONE
完全忽略访问者,如下所示:

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;
根据需要,您可以使用:

所有生成的getter和setter都是公共的。覆盖 访问级别,使用显式@Setter注释字段或类 和/或@Getter注释。也可以使用此注释(通过 将其与AccessLevel.NONE组合以禁止生成getter 和/或setter


如果您将setter和getter设置为private,它将在PMD检查中出现

避免使用
@Data
,因为它非常昂贵,并且它使用
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
进行封装

不要使用
@Data
而是根据您的需要使用特定的注释 要求

在这里,在类级别指定
@Getter
/
@Setter
,在方法级别指定以下代码,以便从创建Setter和Getter中忽略/排除键应在
@Getter
@Setter
内使用

@Getter(value = AccessLevel.NONE)
@Setter(value = AccessLevel.NONE)
private String mySecret;
完整示例

@Getter
@Setter
public class User{

    private Long id;
    private String firstName;
    private String lastName;
    private int age;
    
    @Getter(value = AccessLevel.NONE)
    @Setter(value = AccessLevel.NONE)
    private String mySecret;
}

完美的如果private字段是一个POJO,并且还带有@Delegate()注释,那么它可以用于将一组属性提取到一个单独的可重用类中。这对于将同一组属性应用于多个类(类似于用于添加属性的mixin)可能很有用。例如,一个mixin表示一组属性,这些属性可能应用于各种XML元素的建模。您是否有类似于在生成器中省略一个字段的情况?您的意思是该属性不应显示在生成器中?不,没有直接的原因。请记住,
@Builder
可以放在函数和构造函数以及类上,并且只提供设置该函数签名中出现的那些属性。它不会为该属性实现任何setter和getter,其中@Data默认包括setter和getter。通过提及
AccessLevel.NONE
,可以排除该问题。