【问题标题】:Generate constructor for required super fields为所需的超级字段生成构造函数
【发布时间】:2017-02-15 09:27:28
【问题描述】:

我有以下课程:

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public abstract class EmailData {

    private final Iterable<String> recipients;
}

以及以下子类:

import lombok.Getter;

@Getter
public class PasswordRecoveryEmail extends EmailData {

    private final String token;
}

是否有可能对PasswordRecoveryEmail 进行注释,以便生成所需类和超类字段的构造函数?

【问题讨论】:

  • Lombok 这样做将有助于 Spring 项目自动装配构造函数参数。
  • @marcioggs 据我所知,这是一个春天引发的问题。

标签: java lombok


【解决方案1】:

@…Constructor 注释不会显式调用构造函数,因此它们都依赖于默认构造函数来完成正确的工作。所以,不,你不能说服 Lombok 为你创建这些构造函数。

你能得到它的最接近的是:

  1. EmailData 中提供一个默认构造函数(无参数),即protected,并为recipients 分配一些合理的值。
  2. 自己编写 PasswordRecoveryEmail 的 required-args 构造函数。

根据我的经验,Lombok 经常没有完全涵盖继承。

【讨论】:

  • 似乎仍然是真的。 In the case of inheritance, Lombok can’t generate automatically a constructor that calls a super constructor with parameters for a subclass.devwithus.com/lombok-constructor-annotations(作为最后一部分)
  • 有趣的是,Kotlin 的数据类也面临着类似的困境。
猜你喜欢
  • 2019-11-09
  • 2017-01-23
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2013-10-25
  • 1970-01-01
相关资源
最近更新 更多