我刚刚升级到Intellijidea14和Java8,我想将我的项目也升级到Java版本8,以开始使用一些新功能。但是在正确配置Intellij以使用Java8之后,我仍然遇到Lombok的问题。看起来Java8和lombok之间存在冲突,因为现在我的@Getter和@Setter注释不再起作用。lombok的版本是1.10.8。有什么建议吗? 最佳答案 简答:Lombok支持Java8,并且从1.12.2版本开始支持。长答案Lombok支持Java8,并且根据changelog从版本1.12.2(2013年10月10日)开始支持:
ProjectLombok试图减少我们Java8代码库中的样板代码。缺点是它限制了工具支持(重构、静态分析)。例如,在我使用IntelliJ的实验中,重构用@Builder注释的类的字段,不再有效。我知道没有解决方法(您必须手动修复使用Builder的旧方法名称的位置)。另一个例子是在Eclipse中“查找引用”在一个字段上找不到引用,但一个好的解决方法是打开大纲并在生成的getter/setter上应用“查找引用”。我的问题:它破坏了主要IDE(尤其是Eclipse、IntelliJ)的哪些重构功能?是否有好的解决方法? 最佳答案
我使用带有构建器模式的lombok构建了一个Java对象。但是,在尝试使用Jackson反序列化Java对象时出现以下异常。对于具有@JsonProperty注释的字段,会发生这种情况。Exceptioninthread"main"com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:Unrecognizedfield"user_name"(classUser$UserBuilder),notmarkedasignorable(2knownproperties:"userName","userId"])at[S
我已经开始使用Lombok库,但我无法弄清楚使用凋灵和构建器之间的区别。@Builder@WitherpublicclassSample{privateintx;privateinty;}现在我可以通过两种方式创建一个对象:Samples=newSample().builder().x(10).y(15).build();或Samples=newSample().withx(10).withy(10);两者有什么区别?我应该使用哪一个? 最佳答案 @Builder用于创建可变对象,@Wither用于不可变对象(immutable对象
ProjectLombok's类注释@ToString用于在其注释的类中自动生成toString()方法。对于这个类:@ToStringpublicclassSomeClass{Stringfield1="Field#1";Stringfield2="Field#2";}调用生成的toString()方法将产生以下输出:SomeClass(field1="Field#1",field2="Field#2")注解的可选元素可用于包含或排除特定字段,但我想知道的是......“有没有办法告诉Lombok从输出中排除类名?”也许是这样的:@ToString(exclude="#classna
我正在努力将jpa实体转换为使用lombok。生成的代码如下:@Entity@Table(name="TEST")@Data@NoArgsConstructor@AllArgsConstructorclassTest{...@Column(name="FORMATTING")@Enumerated(EnumType.ORDINAL)privateFormatTypeformatType;...}生成的错误消息包含以下内容Causedby:org.hibernate.HibernateException:Missingcolumn:formatTypeinTEST我真的不知道要在这里谷歌
我已经尝试在IntellijIDEA13Ultimate上使用Lombok。然而。当我使用特定注释时,我得到了所有应该可用的方法的著名错误“找不到符号”,例如,我曾经用作注释的是@Builder、@AllArgsConstructor和@Data。我已经将我的编译器设置为启用注释处理,并且我已经深入研究了它,但没有解决方法。任何建议或提示都会很好。 最佳答案 有点老问题了,但我今天遇到了同样的问题。我必须做两件事才能让它发挥作用:设置注解处理:Settings->Compiler->Annotation处理器将项目从ajc更改为ja
我想我在使用@Getter时发现了误报来自ProjectLombok的注释.在下面的示例类中,我收到警告“仅用作方法中的局部变量的私有(private)字段应成为局部变量”(squid:S1450)。publicclassExample{@GetterprivateStringexampleField;//有人可以证实吗?是SonarQube规则中的错误还是我的类(class)或我对该规则或@Getter注释的理解有问题?为了完整起见:项目lombok注释或生成的方法在其他SonarQube规则中被正确识别。所以我认为我的设置很好。我还尝试将@Getter注释放在类级别,但我收到了同样
只是想在我的gradle构建中包含lombok插件,但从标题中得到了错误消息。我的build.gradle看起来像这样:...plugins{id'net.ltgt.apt'version'0.10'}ext{lombok_version="1.16.18"}lombok{version=${lombok_version}sha256=""}...dependencies{...compileOnly"org.projectlombok:lombok:${lombok_version}"apt"org.projectlombok:lombok:${lombok_version}"...
我有一个类产品:@Data@SuperBuilderpublicclassProduct{privateStringname;privateStringmanufacturer;}和扩展类@Data@SuperBuilderpublicclassFrameextendsProduct{privateStringmodel;}我正在尝试使用构建器创建一个Frame对象:returnFrame.builder().name("FrameABC").manufacturer("Manufacturer").model("Model1").build();我将IntelliJ2019.1.1与