Lombok 的 @[No|All|Required]ArgsConstructor 注释的 onConstructor 属性 是否只工作 Java 7 样式?

Is onConstructor property of the Lombok's @[No|All|Required]ArgsConstructor annotation work Java 7 style only?

根据documentation,Lombok 有 3 个用于构造函数生成的注解:

它们都有一个 onConstructor 属性 允许您指定应标记生成的构造函数的注释。

根据 Javadoc,此功能的语法取决于 JDK 版本(对此我们无能为力;它是为了解决 javac 错误)。

最多 JDK7:

@NoArgsConstructor(onConstructor=@__({@AnnotationsGoHere}))

来自 JDK8:

@NoArgsConstructor(onConstructor_={@AnnotationsGohere}) // note the underscore after onConstructor

我正在研究 JDK8。但是,只有 JDK7 变体对我有用,而 JDK8 变体不起作用(生成没有注释的构造函数)。

我检查了 JDK11 - 结果相同。

我检查 Refactor -> Delombok -> @Constructors.

例如,像这样:

@AllArgsConstructor(onConstructor = @__(@Deprecated))
public class SomeClass {
}

生成以下代码:

public class SomeClass {
    @Deprecated
    public SomeClass() {
    }
}

但是像这样:

@AllArgsConstructor(onConstructor_ = @Deprecated)
public class SomeClass {
}

生成这样的代码:

public class SomeClass {
    public SomeClass() {
    }
}

我注意到 Lombok 站点上的文档仅包含一个 JDK7 样式示例。

Javadoc 不正确还是我做错了什么?

我发现,这不是 Lombok 的错误,而是 Lombok IntelliJ plugin 错误。

在编译代码中添加构造函数注解。

Lombok IntelliJ 插件的 Delombok 工具不正确地将 Lombok 的注释转换为 vanilla Java 代码。