Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于生成Getter/Setter的类布尔处理_Java_Lombok - Fatal编程技术网

Java 用于生成Getter/Setter的类布尔处理

Java 用于生成Getter/Setter的类布尔处理,java,lombok,Java,Lombok,我们希望在名称以“is”-前缀开头时,使用lombok getter/setter将布尔值处理为布尔值。龙目山有没有办法做到这一点 在Java(以及SQL和JavaScript)中,我们总是使用成员变量的“is”前缀作为编码约定。对于boolean类型,我们非常满意getter/setter的默认lombok行为。现在,我们还希望为布尔s实现相同的生成逻辑,但lombok默认值在布尔和布尔之间有所不同 我尝试了以下方法: @Data public class BooleanChallenge {

我们希望在名称以“is”-前缀开头时,使用lombok getter/setter将
布尔值
处理为
布尔值
。龙目山有没有办法做到这一点

在Java(以及SQL和JavaScript)中,我们总是使用成员变量的“is”前缀作为编码约定。对于
boolean
类型,我们非常满意getter/setter的默认lombok行为。现在,我们还希望为
布尔
s实现相同的生成逻辑,但lombok默认值在
布尔
布尔
之间有所不同

我尝试了以下方法:

@Data
public class BooleanChallenge {
    // @Getter @Setter just work fine for boolean
    private boolean isSmallBoolean;

    // Boolean are handled different
    private Boolean isBigBoolean;

    @Accessors(fluent = true)
    private Boolean isFluentAccessor;

    @Accessors(prefix = "is")
    private Boolean isWithPrefix;

    @Accessors(prefix = "is", fluent = true)
    private Boolean isWithPrefixAndFluent;

    private void useThoseGetterzAndSetterz() {
        this.isSmallBoolean(); // ✔ "is"-prefix for getter
        this.setSmallBoolean(true); // ✔ "set"-prefix for setter

        this.getIsBigBoolean(); // ❌ "get is"
        this.setIsBigBoolean(true); // ❌ "set is"

        this.isFluentAccessor(); // ✔
        this.isFluentAccessor(true); // ❌ "is"-prefix instead of "get" prefix

        this.getWithPrefix(); // ❌ no "is"-prefix
        this.setWithPrefix(true); // ✔

        this.withPrefixAndFluent(); // ❌
        this.withPrefixAndFluent(true); // ❌
    }
}
这里有一些东西

  • 不要在
    布尔值字段前面加前缀。
    这是可怕和荒谬的,因为,
    JavaBean规范规定,必须命名
    布尔
    字段的getter
    isFieldName
    ,它变为
    isisblamy()
    。 不要把一种可怕的做法当作你的惯例。 看来可怕的事情就要发生了。 此外,Lombok可以识别糟糕的性能并生成正确的getter方法 (
    isBlammy()
    ,在示例中)
  • Boolean
    getter的正确(符合JavaBean规范)名称 (注意大写“B”)字段是
    getFieldName
    。 这是故意的,不是错误。 Lombok生成兼容的getter方法
  • Java自动装箱和灵长类与非灵长类之间的自动拆箱 (在本例中,介于布尔值和布尔值之间)。 当您有一个返回布尔值的getter并指定返回值时 对于布尔变量, Java自动为赋值生成正确的布尔值
  • 唯一需要
    Boolean
    的时间是
    null
    为有效值时(即可能发生)。 如果fluentAccessor不能为空, 将其更改为
    boolean
    自动装箱将解决您的问题

    null
    是合法的可能值时,
    Boolean
    是合适的,而
    Boolean
    不是一个选项

    其他内容

    由于更改糟糕的命名约定不是一个选项, 您必须自己创建getter

    以下是一个例子:

    // Disable the Lombok getIsHooty method creation.
    @Getter(AccessLevel.NONE)
    private Boolean isHooty;
    
    public Boolean isHooty()
    {
        return isHooty;
    }
    
    这里有一些东西

  • 不要在
    布尔值字段前面加前缀。
    这是可怕和荒谬的,因为,
    JavaBean规范规定,必须命名
    布尔
    字段的getter
    isFieldName
    ,它变为
    isisblamy()
    。 不要把一种可怕的做法当作你的惯例。 看来可怕的事情就要发生了。 此外,Lombok可以识别糟糕的性能并生成正确的getter方法 (
    isBlammy()
    ,在示例中)
  • Boolean
    getter的正确(符合JavaBean规范)名称 (注意大写“B”)字段是
    getFieldName
    。 这是故意的,不是错误。 Lombok生成兼容的getter方法
  • Java自动装箱和灵长类与非灵长类之间的自动拆箱 (在本例中,介于布尔值和布尔值之间)。 当您有一个返回布尔值的getter并指定返回值时 对于布尔变量, Java自动为赋值生成正确的布尔值
  • 唯一需要
    Boolean
    的时间是
    null
    为有效值时(即可能发生)。 如果fluentAccessor不能为空, 将其更改为
    boolean
    自动装箱将解决您的问题

    null
    是合法的可能值时,
    Boolean
    是合适的,而
    Boolean
    不是一个选项

    其他内容

    由于更改糟糕的命名约定不是一个选项, 您必须自己创建getter

    以下是一个例子:

    // Disable the Lombok getIsHooty method creation.
    @Getter(AccessLevel.NONE)
    private Boolean isHooty;
    
    public Boolean isHooty()
    {
        return isHooty;
    }
    

    这是我的50美分:
    boolean
    是二进制/双态,而
    boolean
    是三元/三态,因为它需要
    true
    false
    null
    ,或者更准确地说,
    boolean.true
    boolean.false
    、任何自建对象和
    null

    当有一个函数
    isSomething
    时,您希望它返回true或false,而不是null。所以一个可能的
    null
    值可能会把事情搞砸


    尽管如此,我不能真正帮助你解决你的实际问题。我可以建议您增强Lombok库,以便它创建将
    Boolean
    返回值转换为
    Boolean
    s的函数,并为
    defaultif null
    和default
    false if null
    行为提供一些默认注释。但这种带有“隐藏转换”的方法看起来已经相当粗糙了。这是我的50美分:
    boolean
    是二进制/双态,而
    boolean
    是三元/三态,因为它需要
    true
    false
    null
    ,或者更准确地说,
    boolean.true
    boolean.false
    ,任何自创对象,和
    null

    当有一个函数
    isSomething
    时,您希望它返回true或false,而不是null。所以一个可能的
    null
    值可能会把事情搞砸


    尽管如此,我不能真正帮助你解决你的实际问题。我可以建议您增强Lombok库,以便它创建将
    Boolean
    返回值转换为
    Boolean
    s的函数,并为
    defaultif null
    和default
    false if null
    行为提供一些默认注释。但这种带有“隐藏转换”的方法看起来已经相当粗糙了。只是为了保持编码惯例,您的实际问题是什么?如果您对Lombok有意见或改进建议,为什么不通知Lombok团队呢?但也许他们有理由不遵循“是…”的推理?没有什么能阻止你添加它们