gpt4 book ai didi

java - 将默认公共(public)构造函数添加到生成的构建器内部类

转载 作者:行者123 更新时间:2023-12-02 11:15:12 25 4
gpt4 key购买 nike

我正在使用 Lombok 框架来生成样板代码,例如:

import lombok.*;


@Builder
@Value
public final class SocketConfig {

@Builder.Default
private int soTimeoutMilliseconds = 0;

@Builder.Default
private boolean soReuseAddress = false;

@Builder.Default
private int soLingerSeconds = -1;

private boolean soKeepAlive;

@Builder.Default
private boolean tcpNoDelay = false;

}

为了创建构建器实例,我曾经调用SocketConfig.builder()。但为了更好地与 spring bean 创建集成,我尝试创建一个 FactoryBean。但由于构建器类上缺少默认构造函数而出现编译错误,没有找到任何有关它的文档。 Lombok 可以吗?我的意思是在构建器上而不是在原始类上创建默认构造函数。换句话说,我需要两个选项来创建构建器实例:SocketConfig.builder() 或通过 new SocketConfig.SocketConfigBuilder()

import org.springframework.beans.factory.FactoryBean;

public class SocketConfigFactoryBean extends SocketConfig.SocketConfigBuilder implements FactoryBean<SocketConfig> {



@Override
public SocketConfig getObject() throws Exception {
return build();
}

@Override
public Class<?> getObjectType() {
return SocketConfig.class;
}

@Override
public boolean isSingleton() {
return false;
}
}

最佳答案

使用注释NoArgsConstructor :

Generates a no-args constructor. Will generate an error message if such a constructor cannot be written due to the existence of final fields.

Read also this.

关于java - 将默认公共(public)构造函数添加到生成的构建器内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50326530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com