Добавить открытый конструктор по умолчанию во внутренний класс сгенерированного компоновщика - PullRequest
0 голосов
/ 14 мая 2018

Я использую Lombok Framework для генерации стандартного кода, например:

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.Но получил ошибку компиляции из-за отсутствия конструктора по умолчанию для класса builder, не нашел документации по этому поводу.С Ломбоком это возможно?Я имею в виду создать конструктор по умолчанию в конструкторе, а не в исходном классе.Другими словами, я хочу 2 варианта создания экземпляра компоновщика: 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;
    }
}

1 Ответ

0 голосов
/ 14 мая 2018

Используйте аннотацию NoArgsConstructor:

Создает конструктор без аргументов. Будет сгенерировано сообщение об ошибке, если такой конструктор не может быть написан из-за существования окончательного поля.

Читайте также это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...